nginx: upstream con múltiples directivas de servidor?

Pregunta:

Estoy tratando de empaquetar 2 aplicaciones que usan nginx como proxy y entregar cada una un archivo de configuración en /etc/nginx/conf.d/ .

Hacer esto en un archivo ( combined.conf ) funciona muy bien:

    upstream backend1 {
      http://localhost:8989;
    }

    upstream backend2 {
      http://localhost:8990;
    }

    server {
      location /backend1/ {
        proxy_pass  http://backend1;
      }
      location /backend2/ {
        proxy_pass  http://backend2;
      }

Sin embargo, al dividir en 2 archivos, uno de los redireccionamientos falla sistemáticamente:

  • backend1.conf :

     upstream backend1 { http://localhost:8989; } server { location /backend1/ { proxy_pass http://backend1; }
  • backend2.conf :

     upstream backend2 { http://localhost:8990; } server { location /backend2/ { proxy_pass http://backend2; }

Entonces mi pregunta es: ¿un nodo http puede tener 2 server secundarios diferentes?

La documentación de Nginx no dice nada al respecto.

Sin embargo, otras personas parecen haber tenido éxito con este tipo de arquitectura 🙁

La versión de Nginx es 1.1.19-1ubuntu0.1.

¡Gracias por cualquier consejo!

Respuesta:

Después de tanto ruido y pruebas, encontré una manera de hacerlo funcionar y poder enviar un archivo de configuración por aplicación.

Aquí está, enviado en un archivo común y un par de archivos de ubicación / aguas arriba por aplicación:

  • /etc/nginx/conf.d/common-proxies.conf :

     include /upstreams/*.conf; server { include /locations/*.conf }
  • /etc/nginx/locations/backend1.conf

     location /backend1/ { upstream http://backend1; }
  • /etc/nginx/locations/backend2.conf

     location /backend2/ { upstream http://backend2; }
  • /etc/nginx/upstreams/backend1.conf

     upstream backend1 { http://localhost:8989; }
  • /etc/nginx/upstreams/backend2.conf

     upstream backend2 { http://localhost:8990; }

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım