上游的 Nginx 主机标头

Enz*_*nzo 8 nginx

我正在使用 nginx,但设置反向代理时遇到问题。

我的 nginx.conf 是默认的(没有对其进行任何更改),我的站点可用配置是:

upstream backend_hosts {
    server server1.example.com
    server server2.example.com
}

server {
    listen 80;

    location / {
        proxy_set_header Host $host;
        proxy_pass http://backend_hosts;
    }
}
Run Code Online (Sandbox Code Playgroud)

它不起作用,它不传递主机标头。当我做这样的事情时,它会起作用:

...

proxy_set_header Host server1.exampple.com;

...
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

proxy_set_header Host $current_upstream_server_name;
Run Code Online (Sandbox Code Playgroud)

Dan*_*ner 2

我们也一直在努力解决这个问题,虽然不是完整的答案,但我相信这可能会帮助未来的用户登陆此页面。

可以通过访问upstream 变量来写入所选上游服务器的IP 地址$upstream_http_name

http {
    upstream backend {
        server server1.example.com;
        server server2.example.com;
    }
    
    server {
        location / {
            proxy_set_header Host $upstream_http_name;
            proxy_pass http://backend;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果像我们的应用程序中一样,接收到可接受的 IP,则上述配置会将该信息传递到代理请求的 Host 标头中。

可以在此处找到上游模块提供的变量的完整列表

  • 通过链接写入:$upstream_http_name 保留服务器**响应**头字段。 (2认同)