Problema de encadenamiento de pase de proxy de Nginx

Problema de encadenamiento de pase de proxy de Nginx

Mi configuración es la siguiente: tengo el servidor 1 que está abierto al público y el servidor 2 que está abierto sólo al servidor 1.

La solicitud debe llegar al servidor 1 y luego pasar al servidor 2, que la envía a una aplicación backend que se ejecuta localmente. Lo que realmente sucede es que la solicitud va al otro bloque de servidor predeterminado en lugar del subdominio1.dominio.com.

Cuando enrollo el subdominio1.dominio.com desde el Servidor 1, la solicitud se enruta correctamente. ¿Qué me estoy perdiendo?

También intenté agregar proxy_set_header Host $host;y proxy_redirect off;ninguno funcionó.

Configuración del servidor 1:

upstream my-api {
    server subdomain1.domain.com:80;
}

server {
    listen 443 ssl http2;
    server_name subdomain2.subdomain1.domain.com;

    ssl_certificate /path/file.cert;
    ssl_certificate_key /path/file.key;

    access_log /var/log/nginx/my-api.access.log;
    error_log  /var/log/nginx/my-api.error.log;

    location / {
        proxy_pass http://my-api;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name subdomain2.subdomain1.domain.com;
    return 301 https://$host$request_uri;
}

Configuración del servidor 2:

server {

    listen 80;

    server_name subdomain1.domain.com;

    access_log /var/log/nginx/api.en.access.log;
    error_log  /var/log/nginx/api.en.error.log;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:8001;
    }
}

Respuesta1

Finalmente lo descubrí.

Agregué esta línea a la configuración del Servidor 1:proxy_set_header Host subdomain1.domain.com;

Sólo entonces termina en el bloque de servidor correcto. Espero que también ayude a alguien más.

información relacionada