Tengo un sitio que funciona como equilibrador de carga. Sitio A.
Tengo otros sitios que solo pueden tener un dominio. Entonces, si solo redirijo a ellos, dice que no se encontró el nombre de host.
Entonces, si configuro manualmente el encabezado en algo, solo aparece ese sitio.
¿Cómo puedo configurar la proxy_set_header Host xxxx
dirección del servidor elegida? De esta manera, cada solicitud de redireccionamiento tendrá un encabezado de host diferente y apropiado.
No será un problema si mis otros 2 sitios podrían funcionar en función de la URL y no del encabezado del host.
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
error_log logs/error.log debug;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
upstream myapp1 {
#server localhost:3333;
server www.asd.com:80;
}
server {
listen 80;
location / {
proxy_set_header Host $upstream_addr; // should become somehow www.asd.com right now this code doesn't work
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://myapp1;
}
}
}
$server_addr
es de alguna manera 127.0.0.1 por qué?www.asd.com:80
se elija el servidorif(server1) than host = a;
,if(server2) than host = b;
Respuestas:
Debe configurar el encabezado para la variable de host entrante, como se documenta aquí :
fuente
This variable is equal to line Host in *the header of request* or name
es decir, lo que diga el cliente / navegador, ese es el que se elige.Las respuestas a esta pregunta explican este comportamiento y ofrecen soluciones alternativas .
Esencialmente, el encabezado se repara mucho antes de que se seleccione el flujo ascendente. Si no puede hacer que todas las secuencias ascendentes respondan a un único encabezado Host: debe corregir la secuencia ascendente al mismo tiempo que configura el encabezado.
fuente