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

366 5月之前 PHP

答案

  1. $_SERVER['SERVER_NAME']固定的,是Nginx配置中server_name首个值,或Apache配置中的ServerName
  2. $_SERVER['HTTP_HOST']变化的,会根据客户端的HTTP请求输出信息。(1)绑定了多个域名,则输出客户端请求的域名;(2)如果服务器为非80端口,则同时输出端口。

答案解析

假设有如下一个nginx配置:

server {
    listen       8000;
    server_name  a.com www.a.com b.com www.b.com;
    // 其他省略
}

这里我们绑定了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