Como o proxy reverso Nginx consegue rotear o tráfego para o contêiner docker correto se os contêineres estiverem escutando na porta 80?

Como o proxy reverso Nginx consegue rotear o tráfego para o contêiner docker correto se os contêineres estiverem escutando na porta 80?

De acordo comessesite, quando uma rede de contêineres é configurada, cada contêiner escuta a porta 80 por padrão e isso pode levar a conflitos entre o tráfego de entrada. Isso é resolvido usando o proxy reverso Nginx (também escutando na porta 80) que procura a variável VIRTUAL_HOST e roteia o tráfego para o contêiner correto.

Mas aqui está o que eu não entendo. Se o Nginx também estiver escutando na porta 80 (como todos os outros contêineres), como isso resolverá o problema de conflito de tráfego? Como o Nginx está escutando na porta 80, o problema do conflito ainda não deveria persistir? O Nginx captura automaticamente todo o tráfego de entrada, independentemente do número da porta dos outros contêineres? Acho todo esse conceito bastante confuso.

Responder1

Se o Nginx também estiver escutando na porta 80 (como todos os outros contêineres), como isso resolverá o problema de conflito de tráfego?

Talvez eu esteja interpretando mal o artigo, mas parece provável que "todos os outros contêineres" não estejam escutando na porta 80 (ênfase adicionada):

Por padrão, todos os serviços Docker escutam na porta 80, o que criaria conflitos para o tráfego de entrada. Você pode alterar a porta de escuta, é claro, mas ninguém quer digitar coolwebsite.com:34567 para acessar seu site favorito.

E se, em vez disso, você pudesse usar o nginx para rotear o tráfego que chega em coolwebsite.com para um contêiner exclusivo que escuta na porta 34567 e rotear o tráfego que chega em anothercoolwebsite.net para um segundo contêiner que escuta 45678?

Neste cenário, o Nginx parece ser o único servidor web escutando na porta 80.

O Nginx captura automaticamente todo o tráfego de entrada, independentemente do número da porta dos outros contêineres?

O Nginx capturaria todo o tráfego na porta 80. Ou seja, http://coolwebsite.comé efetivamente equivalente à http://coolwebsite.com:80maioria dos softwares. O Nginx estaria então retransmitindo o tráfego entre a porta 80 e qualquer porta em que o(s) contêiner(es) Docker estivesse(m) sendo executado(s), dependendo do nome do host.

informação relacionada