上游的Nginx主机头

时间:2016-10-23 18:59:19

标签: 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;
    }
}

并且它无法正常工作,它没有通过主机标头。当我做这样的事情时,它有效:

...

proxy_set_header Host server1.exampple.com;

...

我想做这样的事情:

proxy_set_header Host $current_upstream_server_name;

1 个答案:

答案 0 :(得分:1)

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

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

http {
    upstream backend {
        server server1.example.com;
        server server2.example.com;
    }
    
    server {
        location / {
            proxy_set_header Host $upstream_http_name;
            proxy_pass http://backend;
        }
    }
}

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

可以找到here

上游模块提供的变量的完整列表。