我的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。
答案 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
标头以进行区分。