繁体   English   中英

用于Puma的Nginx代理:忽略我的配置,不从套接字提供服务

[英]Nginx proxy for Puma: Ignoring my config, not serving from socket

我正在尝试阅读以下文章: https : //www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-puma-and-nginx-on-ubuntu-14-04

与新的Amazon Linux EC2实例。 我正在使用现成的/etc/nginx/nginx.conf文件,并将配置文件添加到/ etc / nginx / sites-default / default

彪马似乎运转良好:

/home/ec2-user/flviewer/shared/log/puma_error.log:[8006] *在Unix:///home/ec2user/flviewer/shared/sockets/tmp/puma.sock上收听

但这显示在/var/log/nginx/error.log中:

2016/12/12 05:33:00 [错误] 11018#0:* 1 open()“ / usr / share / nginx / html / flviewer”失败(2:无此类文件或目录),客户端:173.73.119.219 ,服务器:本地主机,请求:“ GET / flviewer HTTP / 1.1”,主机:“ 54.86.222.53”

当它应该查看我打开的套接字时,为什么要在“ / usr / share / nginx / html / flviewer”中查找呢?

这是我的配置,如“ nginx -T”转储的:

# configuration file /etc/nginx/sites-available/default:
upstream app {
  # Path to Puma SOCK file, as defined previously
  server unix:/home/ec2-user/flviewer/shared/tmp/sockets/puma.sock fail_timeout=0;
}

server {
  listen 80;
  server_name localhost;

  root /home/ec2-user/flviewer/current/public;

  try_files $uri/index.html $uri @app;

  location @app {
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_redirect off;
    #proxy_http_version 1.1;
    proxy_set_header Connection '';
    proxy_pass http://app;
    #autoindex on;
  }

   location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
   }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

没事。 我将/etc/nginx.conf剥离为此,并启动并运行。 我不得不扔掉了nginx.conf中所有的样板。 这有效:

配置文件:

# Run nginx as a normal console program, not as a daemon
daemon off;
user ec2-user;

# Log errors to stdout
error_log /dev/stdout info;

events {} # Boilerplate

http {

  # Print the access log to stdout
  access_log /dev/stdout;

  # Tell nginx that there's an external server called @app living at our socket
  upstream app {
    server unix:/home/ec2-user/flv/shared/tmp/sockets/puma.sock fail_timeout=0;
  }

  server {

    # Accept connections on localhost:2048
    listen 80;
    server_name localhost;

    # Application root
    root /home/ec2-user/flv/shared/public;

    # If a path doesn't exist on disk, forward the request to @app
    try_files $uri/index.html $uri @app;

    # Set some configuration options on requests forwarded to @app
    location @app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://app;
    }

   location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;

  }
}

我认为这与使用默认的nginx配置文件有关。 尝试将/etc/nginx/sites-available/default移至/etc/nginx/sites-enabled/flviewer

$ mv /etc/nginx/sites-available/default /etc/nginx/sites-enabled/flviewer

然后重新加载并重新启动nginx。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM