Reenvío de Nginx por nombre de servidor


1

Tengo varios servicios dockerizados, que sirven http (y https). El puerto http interno (80) se asigna en el nivel del acoplador a un puerto diferente, por lo que se puede acceder al host. Y esto está funcionando bien:

curl localhost:1234

Me lleva a mi servicio http en el contenedor.

Ahora me gustaría que esto sea accesible 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
...

Esto podría hacerse (por ejemplo) usando una configuración de proxy inverso que es posible con Nginx.
Seth

Respuestas:


0

Sí puede.

la opción nombre_servidor se usa 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 por http: // myserver1 o http: // myserver2 .

¿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 redirigirlo a través de

# place this inside the 'server{' block
location / {
  proxy_pass http://server1;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.