Nginx中$ host和$ http_host的区别是什么?

在Nginx中,variables$host$http_host什么区别。

$host是Core模块的一个variables。

$主机

如果Host头不可用,则此variables等于请求头中的Host Host或处理请求的服务器的名称。

在这种情况下,这个variables可能与$ http_host的值不同:1)当主机input头文件不存在或者有一个空值时,$ host等于server_name指令的值; 2)当Host的值包含端口号时,$ host不包含该端口号。 自0.8.17以来,$ host的值总是小写。

$http_host也是同一个模块的一个variables,但是你不会用这个名字find它,因为它一般被定义为$http_HEADER ( ref )。

$ HTTP_HEADER

HTTP请求标题HEADER的值在转换为小写字母时使用'破折号'转换为'下划线',例如$ http_user_agent,$ http_referer …;


总结:

  • $http_host总是等于HTTP_HOST请求头。
  • $host等于$http_host小写且不包含端口号 (如果存在), 除非HTTP_HOST不存在或为空值 。 在这种情况下, $host等于处理请求的服务器的server_name指令的值。