Nginx 反向代理到 Unicorn - nginx 配置不正确?
Nginx reverse proxy to Unicorn - nginx configuration is incorrect?
我按照这个 tutorial 将我的 rails 应用程序配置为 运行 独角兽,并在我的 AWS ubuntu 实例上被 Nginx 反向代理。
我能够从外部访问站点上的 "Welcome to nginx!" 默认页面 运行ning(安全配置正确)。但它不为 rails 应用服务。
我的独角兽运行宁在/home/ubuntu/appname/shared/sockets/unicorn.sock=
之下
我运行sudo service unicorn restart
以防万一。
当我 运行 sudo service --status-all
它 returns:
[ ? ] unicorn_gpei-tk
正如我提到的 nginx 肯定是 运行ning,这是位于 /etc/nginx/sites-available/default
:
的配置
upstream app {
# Path to Unicorn SOCK file, as defined previously
server unix:/home/ubuntu/appname/shared/sockets/unicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name localhost;
root /home/ubuntu/appname/public;
try_files $uri/index.html $uri @app;
location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
/etc/nginx/sites-enabled
中的符号链接是 default -> /etc/nginx/sites-available/default
——我想第二个问题是:是否需要启用站点?本教程没有 mention/require 它,我在尝试破译此问题的 1000 个其他资源之后遇到了这个问题。
其他信息:如果我 运行 Unicorn 作为用户,我可以在端口 8080 上连接到它,所以 Unicorn 也可以 运行 自己并为网站提供服务。
而且我也重启了几次nginx服务,还是没有更新配置,可能是我哪里出错了
真的没有看到我错过了什么,clues/ideas?谢谢。
编辑:
我进入 /var/log/nginx/error.log(有一个 error.log.1,但它似乎没有更新)并且出现了:
2016/07/28 16:21:19 [error] 11763#11763: *2 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: XX.XXX.XXX.XX, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "my_public_address.com", referrer: "http://my_public_address.com/"
和 /var/log/nginx/access.log 是:
XX.XXX.XXX.XX - - [28/Jul/2016:16:24:58 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://my_public_address.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-"
查看/home/ubuntu/appname/shared/sockets/unicorn.sock的权限,看是否可以被nginx运行用户访问。
我发现了问题并修复了它。
您需要包含所需的配置。在 /etc/nginx/nginx.conf 中注释掉默认配置,因为它指向本地主机。
在这里添加你想要的配置。在我的例子中是这样的:
/etc/nginx/sites-available/*
我那里只有一个配置文件,但只是想把 *.
重启nginx服务。
许多新手小时的头痛现在都消失了。
我按照这个 tutorial 将我的 rails 应用程序配置为 运行 独角兽,并在我的 AWS ubuntu 实例上被 Nginx 反向代理。
我能够从外部访问站点上的 "Welcome to nginx!" 默认页面 运行ning(安全配置正确)。但它不为 rails 应用服务。
我的独角兽运行宁在/home/ubuntu/appname/shared/sockets/unicorn.sock=
我运行sudo service unicorn restart
以防万一。
当我 运行 sudo service --status-all
它 returns:
[ ? ] unicorn_gpei-tk
正如我提到的 nginx 肯定是 运行ning,这是位于 /etc/nginx/sites-available/default
:
upstream app {
# Path to Unicorn SOCK file, as defined previously
server unix:/home/ubuntu/appname/shared/sockets/unicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name localhost;
root /home/ubuntu/appname/public;
try_files $uri/index.html $uri @app;
location @app {
proxy_pass http://app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
/etc/nginx/sites-enabled
中的符号链接是 default -> /etc/nginx/sites-available/default
——我想第二个问题是:是否需要启用站点?本教程没有 mention/require 它,我在尝试破译此问题的 1000 个其他资源之后遇到了这个问题。
其他信息:如果我 运行 Unicorn 作为用户,我可以在端口 8080 上连接到它,所以 Unicorn 也可以 运行 自己并为网站提供服务。
而且我也重启了几次nginx服务,还是没有更新配置,可能是我哪里出错了
真的没有看到我错过了什么,clues/ideas?谢谢。
编辑:
我进入 /var/log/nginx/error.log(有一个 error.log.1,但它似乎没有更新)并且出现了:
2016/07/28 16:21:19 [error] 11763#11763: *2 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: XX.XXX.XXX.XX, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "my_public_address.com", referrer: "http://my_public_address.com/"
和 /var/log/nginx/access.log 是:
XX.XXX.XXX.XX - - [28/Jul/2016:16:24:58 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://my_public_address.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-"
查看/home/ubuntu/appname/shared/sockets/unicorn.sock的权限,看是否可以被nginx运行用户访问。
我发现了问题并修复了它。
您需要包含所需的配置。在 /etc/nginx/nginx.conf 中注释掉默认配置,因为它指向本地主机。
在这里添加你想要的配置。在我的例子中是这样的:
/etc/nginx/sites-available/*
我那里只有一个配置文件,但只是想把 *.
重启nginx服务。 许多新手小时的头痛现在都消失了。