Назад | Перейти на главную страницу

Nginx: как установить заголовок хоста для выбранного сервера (балансировка нагрузки)

У меня есть сайт, который работает как балансировщик нагрузки. Участок А.

У меня есть другие сайты, на которых может быть только один домен. Поэтому, если я просто перенаправляю к ним, он говорит, что имя хоста не найдено.

Итак, если я вручную установил заголовок для чего-то, то появится только этот сайт.

Как я могу установить 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;
        }
    }
}

Вам необходимо установить заголовок для входящей переменной хоста, как описано в документации. Вот:

proxy_set_header Host $host;

Ответы на этот вопрос объясняют такое поведение и предлагают обходные пути..

По сути, заголовок фиксируется задолго до выбора восходящего потока. Если вы не можете заставить все восходящие потоки отвечать на один заголовок Host :, вы должны исправить восходящий поток одновременно с установкой заголовка.