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として実行されており、すべてが問題ないように見えるかどうかを確認しました。私もタイムアウトで遊んだが結果はなかった。誰か助けてもらえますか?
デフォルトでは、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