Estoy probando la implementación de Discourse sobre AlmaLinux 9 derivado de CentOS con SELinux habilitado y nginx externo configurado.
Debido a que el contenedor basado en Ubuntu no conoce SELinux, reemplaza continuamente el socket de dominio Unix con un nuevo archivo que no tiene etiqueta de seguridad cada vez que inicio el contenedor, y nginx no tiene permiso para comunicarse con él hasta que ejecuto restorecon sobre el archivo para darle un contexto de seguridad al que nginx puede acceder. Obviamente, eso no funciona como solución de producción.
Realmente no quiero ejecutar semanage permissive -a httpd_t porque me gustaría aprovechar SELinux en el único servicio que está realmente expuesto al mundo exterior. ![]()
Funciona si hago proxy a un puerto de red en lugar de a un socket de dominio Unix:
setsebool -P httpd_can_network_connect 1- No usar
templates/web.socketed.template.yml expose: - "8008:80"- En el nginx externo,
proxy_pass http://127.0.0.1:8008
¿Existen desventajas particulares en esto? ¿Debería cambiar algún parámetro como la limitación de conexiones en esta configuración?
Escribiré esto con más detalle como documentación después de pruebas más exhaustivas y, si hay preocupaciones adicionales, puedo incluirlas en lo que escriba.