¿Alguna desventaja de proxy a través de puerto en lugar de socket de dominio unix?

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. :smiling_face:

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.

2 Me gusta

Mientras bloquees a las personas de conectarse directamente al puerto 8008 usando tu método preferido, no hay problema.

3 Me gusta

¡Gracias!

public (active)
  target: default
...
  services: dhcpv6-client http https ssh
  ports: 
  protocols: 
  forward: yes
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Hay una diferencia en la latencia, un socket es aproximadamente ~3 veces más rápido que un puerto de loopback local.

Dicho esto, estamos hablando de una diferencia de 4-5us aquí, en el mejor de los casos.

3 Me gusta

Después de investigar más, definitivamente quiero agregar proxy_set_header \"Connection\" \"\"; para deshabilitar el encabezado predeterminado Connection: close