Pao*_*olo 27 php configuration fastcgi nginx
我的配置文件有一个server以...开头的指令块
server {
server_name www.example1.com www.example2.com www.example3.com;
Run Code Online (Sandbox Code Playgroud)
...为了允许使用不同的域名访问该站点.
但是,在这种情况下,PHP $_SERVER['SERVER_NAME']始终返回第一个条目server_namehttp://www.example1.com
所以我无法从PHP代码中知道用户用来访问该站点的域.
有没有办法告诉nginx/fastcgi传递用于访问该网站的真实域名?
到目前为止,我发现的唯一解决方案是server使用不同的server_name条目为每个域重复整个块,但显然我正在寻找更好的块.
Tan*_*Tat 38
设置SERVER_NAME为$host在fastcgi_params配置中使用.
fastcgi_param SERVER_NAME $host;
Run Code Online (Sandbox Code Playgroud)
资料来源:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_param
这是有意的,而正确的解决方案是$_SERVER['HTTP_HOST']在您的代码中使用.
您应该将其解释SERVER_NAME为经过验证的服务器名称,以及HTTP_HOST可以非常容易地修改的用户输入,因此不应该被信任.