El proxy inverso de Nginx requiere un puerto interno para funcionar al redirigir el tráfico a la máquina host de Docker

El proxy inverso de Nginx requiere un puerto interno para funcionar al redirigir el tráfico a la máquina host de Docker

He estado usando una máquina host Linux con varios contenedores acoplables ejecutándose con uno de ellos comoAdministrador de proxy Nginx(de ahora en adelante: NPM), que es simplemente Nginx con una interfaz de usuario amigable.

NPM expone los puertos 80 y 443 y redirige el tráfico a cada contenedor según las reglas de proxy especificadas, una configuración de proxy inverso antigua y normal. Todos los contenedores reciben instrucciones de conectarse a una red Docker puente para que NPM pueda acceder a ellos fácilmente.

Todo eso funciona. Ahora tengo un nuevo servicio que también debe exponerse mediante NPM, la diferencia es que el servicio no se ejecuta en un contenedor sino en la máquina host y se puede acceder a él en el puerto 3711.

Al investigar y terminé con esta sugerencia:

extra_hosts:
    - "host.docker.internal:host-gateway"

Al agregar eso al archivo docker-compose bajo el servicio NPM, le permite llegar a cualquier puerto en la máquina host y, de hecho, al hacer un ping desde el contenedor NPM obtuve host.docker.internaluna respuesta. El problema es que después de configurar la regla de proxy, como siempre hago:

ingrese la descripción de la imagen aquí

Si intento acceder al servicio desde Internet a través de ci-server.domain.com, obtengo un 502. ¡PERO si lo hago a ci-server.domain.com:3711 puedo acceder a él!

¿Por qué necesito agregar el puerto interno al dominio?Todos mis demás servicios que se ejecutan en contenedores responden a 80/443 y son redirigidos internamente a sus puertos.

información relacionada