nginx中的proxy_传递到EC2实例的私有IP

nginx中的proxy_传递到EC2实例的私有IP,nginx,proxy,amazon-ec2,resque,Nginx,Proxy,Amazon Ec2,Resque,我有两个AmazonEC2实例。让我称它们为X和Y。它们上都安装了nginx。Y在端口3000上运行。只有X拥有公共IP和域example.com。假设Y的私有IP是15.0.0.10 我想要的是所有请求都到达X。只有当请求url匹配模式/resque,它才应该由Y在localhost:3000/overview处理,这是resque web界面。这似乎可以使用nginx配置中的proxy_pass来完成 因此,在nginx.conf中,我添加了以下内容: location /resque {

我有两个AmazonEC2实例。让我称它们为X和Y。它们上都安装了nginx。Y在端口
3000
上运行。只有X拥有公共IP和域example.com。假设Y的私有IP是
15.0.0.10

我想要的是所有请求都到达X。只有当请求url匹配模式
/resque
,它才应该由Y在
localhost:3000/overview
处理,这是resque web界面。这似乎可以使用nginx配置中的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
在我的web浏览器中,它显示了
502坏网关

在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" 

如果需要通过寻址实例的IP来访问服务器,那么对于可能出现的错误以及如何解决该问题,您有什么建议吗?

结果表明,服务器应该运行在0.0.0.0上

因此,为了解决我的问题,我停止了在127.0.0.1:3000上运行resque的服务器,并重新启动它以绑定到0.0.0.0:3000。Rest所有内容都与上述内容保持一致,并且可以正常工作。谢谢


仅供参考:

您的resque是否在15.0.0.10:3000进行监听?可能它会监听localhost:3000。@alexeyten他们都应该是sameNo。localhost是127.0.0.1,只能从同一台计算机访问。does
http://15.0.0.10:3000/overview
自己工作吗?