O proxy reverso Nginx requer uma porta interna para funcionar ao redirecionar o tráfego para a máquina host Docker

O proxy reverso Nginx requer uma porta interna para funcionar ao redirecionar o tráfego para a máquina host Docker

Estou usando uma máquina host Linux com vários contêineres docker rodando com um deles comoGerenciador de proxy Nginx(de agora em diante: NPM), que é apenas Nginx com uma UI amigável.

O NPM expõe as portas 80 e 443 e redireciona o tráfego para cada contêiner de acordo com as regras de proxy especificadas, uma configuração antiga e regular de proxy reverso. Todos os contêineres são instruídos a se conectar a uma rede Docker ponte para que o NPM possa alcançá-los facilmente.

Tudo isso funciona. Agora tenho um novo serviço que precisa ser exposto também usando NPM, a diferença é que o serviço não roda em um container, mas sim na máquina host, e é acessível na porta 3711.

Ao fazer minha pesquisa e acabei com esta sugestão:

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

Ao adicionar isso ao arquivo docker-compose no serviço NPM, você permite que ele alcance qualquer porta na máquina host e, de fato, fazendo um ping de dentro do contêiner NPM, obtive host.docker.internaluma resposta. O problema é que depois de configurar a regra do proxy, como sempre faço:

insira a descrição da imagem aqui

Se eu tentar acessar o serviço pela Internet por ci-server.domain.com, recebo um 502. MAS se eu fizer ci-server.domain.com:3711 posso alcançá-lo!

Por que preciso adicionar a porta interna ao domínio?Todos os meus outros serviços executados em contêineres respondem a 80/443 e são redirecionados internamente para suas portas.

informação relacionada