【发布时间】:2015-09-25 15:26:24
【问题描述】:
我已经阅读了很多关于解决此问题的帖子,但到目前为止没有任何效果,我没有想法。
我有一个 Express Generator 应用程序,在本地运行良好,在 AWS Elastic Beanstalk 站点上运行一次。
EB作为单实例运行,安全组允许来自0.0.0.0/0的PORT 80 tcp,其余都是默认的EB配置(ip表,nginx conf等)
这就是我要去的地方......
1) 将节点命令设置为npm start 以确保它运行而不是app.js
2) 更新了 EC2 环境 PATH 以将当前的 node/npm 添加到其中
3) 确保节点端口运行为 8081
4) 检查节点实际上运行正常(在盒子上我可以通过 IP 和弹性 beanstalk ULR 成功 CURL)
但是从盒子外面,弹性beantalk url返回502并出现此错误..
2015/07/07 21:54:59 [error] 7883#0: *4 connect() failed (111: Connection refused) while connecting to upstream, client: 94.174.20.81, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8081/favicon.ico", host: "ae-prod.elasticbeanstalk.com", referrer: "http://ae-prod.elasticbeanstalk.com/"
Nginx 配置
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
server {
listen 8080;
location / {
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
盒子上的IP表是这样的..
$sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8080
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8080
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
有人有什么想法吗?
【问题讨论】:
-
确保您的负载均衡器的安全组对外开放。
-
没有负载均衡器,它只有一个实例。安全组看起来一切正常...
标签: node.js amazon-web-services nginx amazon-ec2 amazon-elastic-beanstalk