Nginx、Rails 和 Unicorn - 找不到 404 文件

Nginx, Rails, and Unicorn - 404 File not Found

每当我尝试访问 Rails 应用程序时,我都会收到默认的 Nginx 404 页面和 /var/log/nginx/error.log 中的以下错误:

2015/11/16 21:45:30 [error] 16240#0: *78 open() "/usr/local/apps/careers_api/current/public/application/test_aggregate.json" failed (2: No such file or directory), client: 70.184.87.69, server: careers-api.dynamynd.com, request: "GET /application/test_aggregate.json HTTP/1.1", host: "careers-api.dynamynd.com"

nginx.conf:

upstream api_server {
    server unix:/run/unicorn/unicorn-api.sock fail_timeout=0;
}

server {
    listen 443 ssl;

    server_name  abc.xyz.com;
    root /usr/local/apps/abc_xyz/current/public;

    ssl on;
    ssl_certificate /etc/ssl/certs/ssl-bundle.crt;
    ssl_certificate_key /etc/ssl/private/STAR_xyz_com.key;
    ssl_prefer_server_ciphers on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;

    location @app {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_pass http://api_server;
    }
}

我在同一台机器上的其他应用程序 运行 上的配置几乎相同,它们工作得很好。

location @app 是一个命名位置。它只能从另一个位置块间接调用。您有一个隐式 location / 块,但其中不包含调用上游服务的命令。

因此,除非该文件是位于 /usr/local/apps/abc_xyz/current/public/application/test_aggregate.json 的本地静态文件,否​​则您将收到 404 错误。

也许您遗漏了以下内容:

location / {
  try_files $uri $uri/ @app;
}

try_files $uri @app;

在服务器块中。