我正在mac OSX上开发一个RoR应用程序.
为了能够在http:// localhost上访问我的应用程序,并且为了在我的测试中支持SSL,我使用nginx作为我的Webrick端口3000的代理,具有以下配置:
server {
listen 80;
server_name app.mysite.com;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 443 ssl;
server_name secure.app.mysite.com;
ssl on;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
keepalive_timeout 600;
ssl_session_timeout 10m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3000;
### force timeouts if one of backend is died ##
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
### Set headers ####
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
### Most PHP, Python, Rails, Java App can use this header ###
proxy_set_header X-Forwarded-Proto https;
### By default we don't want to redirect it ####
proxy_redirect off;
}
}
当我在http:// localhost /或https:// localhost /上访问应用程序时
服务器响应很快,而http:// localhost:3000的开销可以忽略不计.
但是,当我尝试从同一网络上的另一台计算机访问我的计算机时(例如http://10.0.1.9/),服务器响应速度非常慢,或根本没有响应.
在这种情况下,似乎nginx甚至没有向端口3000发送内部请求,尽管请求从外部到达nginx肯定,并且从外部请求端口3000非常快.
重要的是要注意我的应用程序是以开发模式运行的,我的资产(相当多)都没有预编译.
除了nginx之外还有其他选项可以轻松地在我的网络上公开我的开发站点,这很容易配置,并支持SSL吗?
谢谢,
阿里尔
最佳答案 原来这是nginx的权限问题.
我发现nginx错误日志中的错误后发现了它.
解决方案可以在这里找到
https://serverfault.com/questions/235154/permission-denied-while-reading-upstream