【发布时间】:2016-03-01 23:56:05
【问题描述】:
我正在尝试使用 nginx 在端口 3000 上运行节点应用程序(使用 express)。
这是我的网站的 nginx.conf:
server {
listen [::]:80 ipv6only=off;
server_name website.dev;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $http_host;
}
}
我正在通过 nodemon 任务运行节点应用程序。我还在运行一个 gulp watch 任务,它编译成 css、browserify、babelify 等的内容较少。
我遇到的问题是 nginx 将为节点应用程序提供大约 30 秒的服务,然后(显然是随机的)开始提供 502 错误。 nodemon 任务在这些时间不会停止,gulp 任务也不会运行。
我在节点应用程序本身中找不到任何错误,并且在 nginx 的 error.log 或 access.log 中没有显示任何内容。
我已经验证节点应用程序实际上是在端口 3000 上运行,并且 nginx 正在侦听端口 80。
这是netstat -nlt的输出:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:34490 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::3000 :::* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::42481 :::* LISTEN
最后,几分钟后,nginx 再次返回为应用程序提供服务约 30 秒,然后重复。
如果我运行curl localhost:3000,我会得到我的节点应用程序。即使 nginx 仍然会抛出 502 错误。
【问题讨论】: