SELinux を有効にした CentOS 派生の AlmaLinux 9 上で Discourse をデプロイし、外部 nginx を設定するテストを行っています。
Ubuntu ベースのコンテナは SELinux について認識していないため、コンテナを開始するたびに Unix ドメインソケットを新しいファイルに置き換えてしまい、そのファイルはセキュリティラベルが付与されていません。nginx は、restorecon を実行して nginx がアクセスできるセキュリティコンテキストを付与するまで、そのファイルと通信することが許可されません。これは明らかに本番環境でのソリューションとしては機能しません。
semanage permissive -a httpd_t を実行したくありません。なぜなら、外部に公開されている唯一のサービスである SELinux を実際に活用したいからです。![]()
ネットワークポートにプロキシする場合、Unix ドメインソケットの代わりに機能します。
setsebool -P httpd_can_network_connect 1templates/web.socketed.template.ymlを使用しないexpose: - "8008:80"- 外部 nginx で
proxy_pass http://127.0.0.1:8008
この構成には、特に欠点はありますか?この構成で接続制限などのパラメータを変更すべきですか?
より詳細なテストの後、この内容をドキュメントとして詳しく記述します。追加の懸念事項があれば、それも記述に含めることができます。