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

Как заставить Nginx пересылать исходное имя хоста

У меня есть сервер nginx, работающий как балансировщик нагрузки для моих серверов Apache. Я использую поддомены, и мой код полагается на значение HTTP_HOST для выполнения правильной задачи.

Когда я прошу сказать: http://get.example.com после пересылки HTTP_HOST на apache становится example.com.

Мой вопрос: как сделать так, чтобы он оставался таким же, как в исходном запросе?

Вот моя конфигурация nginx:

upstream example.com {
  server 192.168.2.1:8909 weight=2;
  server 192.168.2.2:8909 weight=1;
  server 192.168.2.3:8909 weight=1;
}

server {
  listen 80;
  location / {
    proxy_pass  http://example.com;
  }
}

Я пробовал добавить несколько proxy_pass, по одному для каждого поддомена, и похоже, что это не работает.

Вам нужно передать HTTP Host заголовок. Добавьте это в соответствующий location:

proxy_set_header Host $host;