我的配置文件有一个{... 1}}指令块,以...
开头server {
server_name www.example1.com www.example2.com www.example3.com;
...以便允许使用不同的域名访问网站。
然而,PHP的$_SERVER['SERVER_NAME']
始终返回server_name
的第一个条目,在本例中为http://www.example1.com
所以我无法从PHP代码中知道用户访问该网站的域名。
有没有办法告诉nginx / fastcgi传递用于访问网站的真实域名?
到目前为止,我发现的唯一解决方案是使用不同的server
条目为每个域重复整个server_name
块,但显然我正在寻找更好的。{/ p>
答案 0 :(得分:37)
在SERVER_NAME
配置中设置$host
以使用fastcgi_params
。
fastcgi_param SERVER_NAME $host;
来源:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param
答案 1 :(得分:8)
这是有意的,正确的解决方案是在代码中使用$_SERVER['HTTP_HOST']
。
您应该将SERVER_NAME
解释为已验证的服务器名称,将HTTP_HOST
解释为用户输入,可以很容易地进行修改,因此不应该可信的。