我正在尝试在 CentOS 7 上运行的 Nginx 服务器上运行多个 Nodejs 应用程序。我注意到当我在某些端口上运行 Nodejs 应用程序时,浏览器中出现 502 Bad Gateway 错误,因此我检查了错误日志:
[notice] 12806#0: signal process started
[crit] 12807#0: *13 connect() to 127.0.0.1:7777 failed (13: Permission denied) while connecting to upstream, client: **.**.99.58, server: myapp.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:7777/", host: "myapp.com"
[crit] 12807#0: *13 connect() to [::1]:7777 failed (13: Permission denied) while connecting to upstream, client: **.**.99.58, server: myapp.com, request: "GET / HTTP/1.1", upstream: "http://[::1]:7777/", host: "myapp.com"
例如,当我将应用程序更改为监听 8008 时,一切都运行正常。我检查了权限,并检查了进程是否以 root 身份运行,一切似乎都正常。我也尝试了超时,但没有结果。有人能帮忙吗?
答案1
默认情况下,SELinux 仅允许 Web 服务器与有限的一组端口建立出站连接。
# semanage port --list
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
要解决这个问题,您只需将自己想要的端口号添加到列表中。
# semanage port --add --type http_port_t --proto tcp 7777
然后您将看到添加到列表中的端口号,并且您的连接应该可以正常工作。
# semanage port --list
http_port_t tcp 7777, 80, 81, 443, 488, 8008, 8009, 8443, 9000
答案2
我在下面的链接中回应了这种情况。我成功了