У меня есть сайт, который работает как балансировщик нагрузки. Сайт А.
У меня есть другие сайты, которые могут иметь только один домен. Так что, если я просто перенаправить их, он говорит, что имя хоста не найдено.
Так что, если я вручную установлю заголовок на что-то, появится только этот сайт.
Как я могу установить proxy_set_header Host xxxx
выбранный адрес сервера. Таким образом, каждый запрос на перенаправление будет иметь различный и соответствующий заголовок узла.
Это не будет проблемой, если мои другие 2 сайта могут работать на основе URL, а не заголовка узла.
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
почему-то 127.0.0.1 почему ??www.asd.com:80
выбранif(server1) than host = a;
,if(server2) than host = b;
Ответы:
Вам необходимо установить заголовок для входящей переменной хоста, как описано здесь :
источник
This variable is equal to line Host in *the header of request* or name
это означает, что будет выбран клиент / браузер.Ответы на этот вопрос объясняют это поведение и предлагают обходные пути .
По сути, заголовок фиксируется задолго до того, как выбран восходящий. Если вы не можете заставить все восходящие потоки отвечать на один заголовок Host :, вы должны исправить восходящий поток одновременно с тем, как вы установили заголовок.
источник