Reenvío de Nginx por nombre de servidor

Reenvío de Nginx por nombre de servidor

Tengo varios servicios acoplados que sirven http (y https). El puerto http interno (80) se asigna en el nivel de la ventana acoplable a un puerto diferente, de modo que sea accesible en el host. Y esto está funcionando bien:

curl localhost:1234

Me lleva a mi servicio http en el contenedor.

Ahora me gustaría que se pueda acceder a esto a través de un DNS, sin tener que especificar el puerto (quiero proteger a los clientes de esta asignación de puertos). Me gustaría usar nginx para reenviar solicitudes a http://myserver1-> http://localhost:1234.

¿Se puede configurar nginx de esa manera? ¿Se puede configurar para reenvío múltiple, de la siguiente manera?

http://myserver1  --> http://localhost:1234
http://myserver2  --> http://localhost:1235
...

Respuesta1

Sí puede.

la opción server_name se utiliza para encontrar la mejor coincidencia entre diferentes sitios alojados en el mismo servidor nginx como

server {
  listen 80;
  listen [::]:80;
  server_name myserver1; 

y otro como

server {
  listen 80;
  listen [::]:80;
  server_name myserver2; 

De esta manera pueden ejecutarse tanto en el puerto 80 como coincidir dependiendo de si son llamados porhttp://miservidor1ohttp://miservidor2.

¿Ahora cómo conectarse a sus servicios? Puede definir proveedores de servicios ascendentes como

#place this outside of the 'server{' block
upstream server1 {
  server localhost:1234;
} 

y luego redirigir a él a través de

# place this inside the 'server{' block
location / {
  proxy_pass http://server1;
}

información relacionada