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