nginx反向代理,我如何获得用户请求域?

时间:2015-07-28 06:49:25

标签: php nginx

我的nginx.conf代码是

server {
    listen 80;
    server_name  A.domain.com;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass B.domain.com;
    }
}

当用户请求A.domain.com时,如何获取请求域?当我使用$_SERVER['HTTP_HOST']时,我得到的是B.domain.com,而不是A.domain.com。

1 个答案:

答案 0 :(得分:1)

$ _ SERVER ['HTTP_HOST']给出B.domain.com,因为您使用了proxy_pass。
如果您需要A.domain.com,请设置一个新标题Via,其值等于$ host。

server {
    listen 80;
    server_name  A.domain.com;
    location / {
        set  $via  "1.0 A.domain.com";
        if ($http_via) {
            set $via  "$http_via, 1.0 A.domain.com";
        }
        proxy_set_header  Via  $via;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass B.domain.com;
    }
}

现在,您可以在脚本中检查此Via标头以进行区分。