Answers:
$host
是核心模块的变量。
$主机
如果Host标头不可用,则此变量等于请求标头中的Host行或处理请求的服务器名称。
在以下情况下,此变量的值可能与$ http_host不同:1)当Host输入头不存在或值为空时,$ host等于server_name指令的值;2)当主机的值包含端口号时,$ host不包含该端口号。自0.8.17起,$ host的值始终为小写。
$http_host
也是同一模块的变量,但是您找不到具有该名称的变量,因为它通常被定义为$http_HEADER
(ref)。
$ http_HEADER
HTTP请求标头HEADER的值转换为小写且“破折号”转换为“下划线”时,例如$ http_user_agent,$ http_referer ...;
总结:
$http_host
始终等于HTTP_HOST
请求标头。$host
等于$http_host
,小写且没有端口号(如果存在),除非HTTP_HOST
不存在或为空值。在这种情况下,$host
等于server_name
处理请求的服务器的指令的值。server_name
指令。如果您在第一个中碰巧有一个正则表达式,则它成为$host
,并且在重写规则期间可能会发生各种难看的事情。
$server_name
变量是否等于server_name
指令的值或所选的实际服务器名称server_name
?
$server_name
始终等于使用server_name指令指定的第一个值。例如,具有server_name example.com one.example.com two.example.com;
,$server_name
将始终是“example.com”,无论哪个主机用户已经指定的。实际上,如果您没有default_server
,则主机可能是完全不同的主机(例如example.org)。
server_name
主机。如果您有多个server_name
,则只会显示第一个。