系统相关
首页 > 系统相关> > nginx中的proxy_pass到EC2实例的私有IP

nginx中的proxy_pass到EC2实例的私有IP

作者:互联网

我有两个Amazon EC2实例.让我称他们为X和Y.我在他们两个上安装了nginx. Y在端口3000上运行resque.只有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时,它会显示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" 

关于什么可能是错的以及如何解决这个问题的任何建议?

解决方法:

事实证明,如果需要通过寻址实例的IP来访问服务器,则应该在0.0.0.0上运行.

因此,为了解决我的问题,我在127.0.0.1:3000停止服务器运行resque并重新启动它以绑定到0.0.0.0:3000.休息一切都和上面一样,有效.谢谢.

供参考:Curl amazon EC2 instance

标签:nginx,proxy,amazon-ec2,resque
来源: https://codeday.me/bug/20190629/1322856.html