PHP $_SERVER['SERVER_NAME'] 和 $_SERVER['HTTP_HOST'] 的区别

答案

  • $_SERVER['SERVER_NAME']固定的,是Nginx配置中server_name首个值,或Apache配置中的ServerName

  • $_SERVER['HTTP_HOST']变化的,会根据客户端的HTTP请求输出信息。(1)绑定了多个域名,则输出客户端请求的域名;(2)如果服务器为非80端口,则同时输出端口。

答案解析

假设有如下一个nginx配置:

  1. server {
  2. listen 8000;
  3. server_name a.com www.a.com b.com www.b.com;
  4. // 其他省略
  5. }

这里我们绑定了4个域名,使用8000端口。

  • 访问:a.com:8000,SERVER_NAME输出a.comHTTP_HOST输出a.com:8000

  • 访问:www.b.com:8000,SERVER_NAME输出a.comHTTP_HOST输出www.b.com:8000