Sto testando il deployment di Discourse su AlmaLinux 9 derivato da CentOS con SELinux abilitato e nginx esterno configurato.
Poiché il container basato su Ubuntu non conosce SELinux, ogni volta che avvio il container, sostituisce continuamente il socket di dominio Unix con un nuovo file non etichettato a livello di sicurezza, e nginx non è autorizzato a comunicare con esso finché non eseguo restorecon sul file per dargli un contesto di sicurezza a cui nginx è autorizzato ad accedere. Ovviamente, questa non è una soluzione di produzione.
Non voglio davvero eseguire semanage permissive -a httpd_t perché vorrei effettivamente sfruttare SELinux sull’unico servizio effettivamente esposto al mondo esterno. ![]()
Funziona se faccio il proxy verso una porta di rete invece che verso un socket di dominio Unix:
setsebool -P httpd_can_network_connect 1- non usare
templates/web.socketed.template.yml expose: - "8008:80"- Nel nginx esterno,
proxy_pass http://127.0.0.1:8008
Ci sono svantaggi particolari in questo? Dovrei cambiare qualche parametro come il limite di connessione in questa configurazione?
Scriverò questo in modo più dettagliato come documentazione dopo test più approfonditi e, se ci saranno ulteriori preoccupazioni, potrò includerle in ciò che scriverò.