我有两个Amazon EC2实例。让我称他们为X和Y.我在他们两个上安装了nginx。 Y在端口3000
上运行resque。只有X有一个公共IP和域example.com。假设Y的私有IP为15.0.0.10
我想要的是所有请求都来自X.只有当请求url与模式/resque
匹配时,它才应由localhost:3000/overview
处的Y处理,这是resque web界面。看起来这可以在nginx config中使用proxy_pass来完成。
所以,在nginx.conf中,我添加了以下内容:
location /resque {
real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;
allow all;
proxy_pass http://15.0.0.10:3000/overview;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
但现在,当我从网络浏览器访问http://example.com/resque
时,会显示502 Bad Gateway
。
在X上的/var/log/nginx/error.log
,
2014/02/27 10:27:16 [error] 12559#0: *2588 connect() failed (111: Connection
refused) while connecting to upstream, client: 123.201.181.82, server: _,
request: "GET /resque HTTP/1.1", upstream: "http://15.0.0.10:3000/overview",
host: "example.com"
有关可能出现的问题以及如何解决此问题的任何建议?
答案 0 :(得分:3)
如果需要通过寻址实例的IP来访问服务器,那么服务器应该在0.0.0.0上运行。
因此,为了解决我的问题,我停止服务器在127.0.0.1:3000上运行resque并重新启动它以绑定到0.0.0.0:3000。休息一切都和上面一样,有效。感谢。