web-dev-qa-db-ja.com

Nodejs Nginxエラー:(13:権限が拒否されました)アップストリームへの接続中に

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

6
user1

デフォルトでは、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
20
Michael Hampton