Encaminhamento Nginx por nome de servidor

Encaminhamento Nginx por nome de servidor

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;
}

informação relacionada