如何让Nginx转发原始主机名

如何让Nginx转发原始主机名

我有一台 nginx 服务器,充当 apache 服务器的负载均衡器。我正在使用子域,并且我的代码依赖 HTTP_HOST 值来执行正确的任务。

当我发出请求时:http://get.example.com一旦它被转发,apache 上的 HTTP_HOST 就会变成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,每个子域一个,但似乎不起作用。

答案1

您需要传递 HTTPHost标头。将其添加到相关内容中location

proxy_set_header Host $host;

相关内容