首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Nginx中的$host和$http_host有什么不同

Nginx中的$host和$http_host有什么不同
EN

Stack Overflow用户
提问于 2013-03-15 00:25:54
回答 2查看 174.2K关注 0票数 200

在Nginx中,变量$host$http_host有什么区别?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-15 00:25:54

$hostCore模块的一个变量。

$host如果主机标头不可用,则此变量等于请求标头中的行主机或处理请求的服务器的名称。在以下情况下,此变量可以具有与$http_host不同的值: 1)当主机输入报头不存在或具有空值时,$host等于server_name指令的值;2)当主机的值包含端口号时,$host不包括该端口号。从0.8.17开始,$host的值总是小写。

$http_host也是同一模块的一个变量,但是您找不到具有该名称的变量,因为它一般被定义为$http_HEADER (ref)。

$http_HEADER转换为小写并将“破折号”转换为“下划线”时的HTTP请求标头的值,例如$http_user_agent,$http_referer...;

总结:

  • $http_host始终等于header.
  • $host request 等于$http_host,小写且不带端口号(如果存在),,除非request不存在或为空值。在这种情况下,$host等于处理请求的服务器的server_name指令值。
票数 252
EN

Stack Overflow用户

发布于 2021-04-23 16:50:05

被接受的答案和它的评论似乎不再正确。文档(http://nginx.org/en/docs/http/ngx_http_core_module.html#var_host)说$host

按以下优先级顺序排列的

:请求行中的主机名,或“主机”请求标头字段中的主机名,或与请求匹配的服务器名

因此,$http_host始终是Host报头字段的值。如果请求行中的主机(如果指定)与Host标头字段不同,它们可能会有所不同。或者如果没有设置Host报头。

server_name仅匹配Host报头字段(http://nginx.org/en/docs/http/request_processing.html),因此$host可能不同于匹配的server_name

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15414810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档