Tenho vários serviços dockerizados, atendendo http (e https). A porta http interna (80) é mapeada no nível do docker para uma porta diferente, para que possa ser acessada no host. E isso está funcionando bem:
curl localhost:1234
Me leva ao meu serviço http no contêiner.
Agora eu gostaria que isso fosse acessível via DNS, sem precisar especificar a porta (quero proteger os clientes desse mapeamento de porta). Eu gostaria de usar o nginx para encaminhar solicitações para http://myserver1
-> http://localhost:1234
.
O nginx pode ser configurado dessa maneira? Pode ser configurado para encaminhamento múltiplo, da seguinte forma:
http://myserver1 --> http://localhost:1234
http://myserver2 --> http://localhost:1235
...
Responder1
Sim pode.
a opção server_name é usada para encontrar a melhor correspondência entre diferentes sites hospedados no mesmo servidor nginx, como
server {
listen 80;
listen [::]:80;
server_name myserver1;
e outro como
server {
listen 80;
listen [::]:80;
server_name myserver2;
Desta forma, eles podem rodar na porta 80 e combinar dependendo se forem chamados porhttp://meuservidor1ouhttp://meuservidor2.
Agora, como se conectar aos seus serviços? Você pode definir provedores de serviços upstream como
#place this outside of the 'server{' block
upstream server1 {
server localhost:1234;
}
e então redirecione para ele via
# place this inside the 'server{' block
location / {
proxy_pass http://server1;
}