Nginx在配置变量 $host $http_host和$proxy_host 区别

区别如下:

 

变量 是否显示端口 值
$host 不显示端口 浏览器请求的ip
$http_host 端口存在则显示 浏览器请求的ip和端口号
$proxy_host 默认80端口不显示,其它显示 被代理服务的ip和端口号

相关文章:

Nginx系列目录:配置示例

三个变量的取值来源

  • $host:优先取请求行中的主机名,否则取 Host 头,不含端口。
  • $http_host:直接取请求头 Host 的值,含端口(如有)。
  • $proxy_host:被代理服务的地址与端口(即 proxy_pass 的目标),默认 80 端口的 http 不显示。

使用建议

做多域名分流或重定向时用 $host 更稳妥(不含端口、格式规范);需要原样转发原始 Host 时用 $http_host。