RHEL 8 の SELinux 環境で nginx の "13: Permission Denied" を解消する
SELinux のポートラベルを追加し、RHEL 8 上の nginx が非標準ポートへバインドできるようにする方法を解説します。
RHEL 8 上の nginx で 1080 のような非標準ポートをリッスンするよう設定すると、13: Permission denied が発生することがあります。多くの場合、SELinux のポートラベルが原因です。
systemd[1]: Starting The nginx HTTP and reverse proxy server...nginx[1626]: nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx[1626]: nginx: [emerg] bind() to 0.0.0.0:1080 failed (13: Permission denied)nginx[1626]: nginx: configuration file /etc/nginx/nginx.conf test failedsystemd[1]: nginx.service: Control process exited, code=exited status=1systemd[1]: nginx.service: Failed with result 'exit-code'.systemd[1]: Failed to start The nginx HTTP and reverse proxy server.解決方法
解決策は、SELinux のポリシーを更新して nginx がカスタムポート 1080 を使用できるようにすることです。
sudo semanage port -a -t http_port_t -p tcp 1080sudo: semanage: command not found というエラーが出た場合は、以下のコマンドで必要なパッケージをインストールしてください。
sudo dnf provides /usr/sbin/semanagesudo dnf install policycoreutils-python-utilsまとめ
semanage port を使ってポート 1080 に http_port_t ラベルを付けると、nginx がこの非標準ポートへバインドできるようになります。
このメッセージはファイルパーミッションのエラーに見えますが、SELinux は nginx に許可されていないタイプのポートへのバインドを拒否します。
SELinux が enforcing モードのホストで nginx に非標準のリッスンポートを追加する場合は、ファイルパーミッションやファイアウォールを変更する前に、そのポートの SELinux ラベルを確認してください。
関連記事
ELB や動的 DNS バックエンド向けの nginx リゾルバー設定
nginx から ELB などの IP アドレスが変化するバックエンドへプロキシする際に、DNS レコードを更新するための設定方法を解説します。
Docker 環境で Greengrass コンポーネントをビルド・デプロイする
Greengrass Core Docker イメージを使い、AWS IoT Greengrass コンポーネントをローカルで開発します。
EC2 上で Proxy.py を軽量 HTTP プロキシとして動かす
認証機構を持たない Proxy.py を EC2 インスタンス上で動かし、SSH トンネル経由で安全にアクセスします。
Docker で MailDev をローカルメールサーバーとして動かす
実際の受信箱を用意することなく、Docker 上で MailDev を動かして送信メールをキャプチャ・確認する方法を紹介します。

Renovate のメジャーバージョン更新 PR を自動で AI レビューする
Renovate のメジャーバージョン更新 PR に ai-review ラベルを付け、GitHub Actions で AI レビューを自動実行する方法を、Claude Code の設定例とともに紹介します。
