Você precisa definir o cabeçalho para a variável de entrada do host, conforme documentado aqui :
proxy_set_header Host $host;
Eu tenho um site que funciona como balanceador de carga. Site A.
Eu tenho outros sites que só podem ter um domínio. Então, se eu apenas redirecionar para eles, ele diz que o nome do host não foi encontrado.
Portanto, se eu definir manualmente o cabeçalho para algo, apenas esse site será exibido.
Como posso definir proxy_set_header Host xxxx
para o endereço do servidor escolhido? Dessa forma, cada solicitação de reencaminhamento terá um cabeçalho de host diferente e apropriado.
Não será um problema se meus outros dois sites funcionarem com base no URL e não no cabeçalho do 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;
}
}
}
Você precisa definir o cabeçalho para a variável de entrada do host, conforme documentado aqui :
proxy_set_header Host $host;
As respostas a essa pergunta explicam esse comportamento e oferecem soluções alternativas .
Essencialmente, o cabeçalho é fixo bem antes do upstream ser selecionado. Se você não puder fazer todos os upstreams responderem a um único cabeçalho Host :, você terá que consertar o upstream ao mesmo tempo em que você definir o cabeçalho.
Tags nginx