Ich teste die Bereitstellung von Discourse auf AlmaLinux 9, das von CentOS abgeleitet ist, mit aktiviertem SELinux und externem Nginx.
Da der Ubuntu-basierte Container SELinux nicht kennt, ersetzt er jedes Mal, wenn ich den Container starte, die Unix-Domain-Socket-Datei durch eine neue Datei, die nicht sicherheitsgekennzeichnet ist. Nginx darf erst damit kommunizieren, nachdem ich restorecon auf die Datei angewendet habe, um ihr einen Sicherheitskontext zu geben, auf den Nginx zugreifen darf. Das ist offensichtlich keine praktikable Lösung für die Produktion.
Ich möchte semanage permissive -a httpd_t nicht wirklich verwenden, da ich SELinux für den einzigen Dienst, der tatsächlich für die Außenwelt offen ist, nutzen möchte. ![]()
Es funktioniert, wenn ich auf einen Netzwerkport statt auf einen Unix-Domain-Socket weiterleite:
setsebool -P httpd_can_network_connect 1- Verwenden Sie nicht
templates/web.socketed.template.yml expose: - "8008:80"- Im externen Nginx:
proxy_pass http://127.0.0.1:8008
Gibt es Nachteile bei dieser Vorgehensweise? Sollte ich in dieser Konfiguration Parameter wie die Verbindungslimits ändern?
Ich werde dies nach gründlicheren Tests detaillierter als Dokumentation aufschreiben und, falls es weitere Bedenken gibt, kann ich diese in meine Aufzeichnungen aufnehmen.