PHP $_SERVER['SERVER_NAME'] 和 $_SERVER['HTTP_HOST'] 的区别
答案
$_SERVER['SERVER_NAME']
是固定的,是Nginx配置中server_name
的首个值,或Apache配置中的ServerName
。$_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.com
,HTTP_HOST
输出a.com:8000
访问:
www.b.com:8000
,SERVER_NAME输出a.com
,HTTP_HOST
输出www.b.com:8000