bind() to 0.0.0.0:XXXX failed (13: Permission denied)でnginxが起動しない

RedHat系のOSで下記のようなエラーが出てnginxが起動しない時の話。

nginx[89735]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx[89735]: nginx: [emerg] bind() to 0.0.0.0:4500 failed (13: Permission denied)
nginx[89735]: nginx: configuration file /etc/nginx/nginx.conf test failed
systemd[1]: nginx.service: Control process exited, code=exited, status=1/FAILURE

上記はnginx.confに4500番ポートでLISTENさせる設定を加えた後に、それを適用しようとサービスを再起動した所でした。rootで実行してるのだから普通はPermission deniedになる事はないのだけど、そういえばSELinux環境だった事を思い出しました。

下記を確認。

# semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

ここで使用可能なポートが決められており、デフォルトで4500番ポートはありません。という事で下記のように追加します。

# semanage port -a -t http_port_t  -p tcp 4500

再確認

[root@kvm1 ~]# semanage port -l | grep http_port_t
http_port_t                    tcp      4500, 80, 81, 443, 488, 8008, 8009, 8443, 9000

4500番が追加されました。その後nginxは無事起動しました。

ちなみに削除する場合は下記。

# semanage port -d -t http_port_t  -p tcp 4500

コメントを残す