Linux运维笔记
我们一直在努力

Nginx内置变量 $http_host 与 $host 区别

$hostCore模块的变量。

$host 如果Host头不可用,则此变量等于请求头中的Host Host或处理请求的服务器的名称。 在这种情况下,该变量可能与$ http_host具有不同的值:

1)当主机输入标题不存在或具有空值时,$ host等于server_name指令的值;

2)当Host的值包含端口号时,$ host不包含该端口号。自0.8.17以来,$ host的值总是小写。

$http_host也是同一个模块的一个变量,但你不会找到它的名字,因为它一般被定义为$http_HEADERref)。

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

总结:

  • $http_host始终等于HTTP_HOST请求标题。
  • $host等于$http_host小写并且没有端口号(如果存在),除非HTTP_HOST不存在或是空值。在这种情况下,$host等于server_name处理请求的服务器的指令值。

查看标准化日志区别:

“192.168.160.1” http_host:”172.16.4.10:808″ host:”172.16.4.10″ “[08/Apr/2016:15:37:06 +0800]” “GET / HTTP/1.1” “304” “0” “171” “-” “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36” “-” “-” “-” “0.000”

赞(0) 打赏

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址