Definir múltiples proxy_pass en el proxy nginx

Definir múltiples proxy_pass en el proxy nginx

ejecutando nginx-proxy como contenedor desde hace varios años. Perfecto suave, sin problemas. Docker-compose.yml que estoy usando para eso:

    services:
  nginx-proxy:
    image: jwilder/nginx-proxy:alpine
    container_name: nginx-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx-certs:/etc/nginx/certs:ro
      - ./nginx-vhost:/etc/nginx/vhost.d
      - ./nginx-html:/usr/share/nginx/html
      - ./uploadsize.conf:/etc/nginx/conf.d/uploadsize.conf
      - ./subdomain1.mytld.com.conf:/etc/nginx/conf.d/subdomain1.mytld.com.conf:ro

Ahora quiero usar proxy_pass para otro servicio en una dirección IP local. Problema. Funciona solo con uno de estos subdominios definidos, no con ambos activados.

Trabajando (contenido del subdominio1.mytld.com.conf):

server {
        listen 443 ssl default;
        ssl_certificate     certs/mytld.com.crt;
        ssl_certificate_key certs/mytld.com.key;
        server_name subdomain1.mytld.com;
        location / {
                proxy_pass https://10.8.0.4/;
        }
#        server_name subdomain2.mytld.com;
#        location / {
#                proxy_pass http://10.8.0.4:8096/;
#        }
}

No funciona:

server {
        listen 443 ssl default;
        ssl_certificate     certs/mytld.com.crt;
        ssl_certificate_key certs/mytld.com.key;
        server_name subdomain1.mytld.com;
        location / {
                proxy_pass https://10.8.0.4/;
        }
        server_name subdomain2.mytld.com;
        location / {
                proxy_pass http://10.8.0.4:8096/;
        }
}

Tan pronto como activo dos de estos nombres de servidor, todo el proxy nginx deja de funcionar. ¿Qué me estoy perdiendo? Gracias por tu ayuda

Respuesta1

Encontré el problema. La etiqueta del servidor sólo permite el uso de "predeterminado" una vez. Entonces, usar la configuración así funciona:

server {
        listen 443 ssl default;
        ssl_certificate     certs/mytld.com.crt;
        ssl_certificate_key certs/mytld.com.key;
        server_name subdomain1.mytld.com;
        location / {
                proxy_pass https://10.8.0.4/;
        }
}

server {
        listen 443 ssl;
        ssl_certificate     certs/mytld.com.crt;
        ssl_certificate_key certs/mytld.com.key;
        server_name subdomain2.mytld.com;
        location / {
                proxy_pass http://10.8.0.4:8096/;
        }
}

información relacionada