$http_host

$http_host 变量包含客户端在 HTTP 请求中发送的 Host 头的值。 — NGINX Core (HTTP)

$http_host NGINX Core (HTTP)

说明

$http_host 变量检索客户端 HTTP 请求中指定的 Host 头的值。该变量在请求处理阶段设置,当 NGINX 解析传入的头时。它的主要目的是让服务器知道客户端试图访问哪个域或子域,这对于在单个服务器上托管多个站点(称为虚拟托管)时的正确路由和请求服务至关重要。通常,$http_host 的值可以是完全合格的域名 (FQDN) 或 IP 地址,如果客户端在请求头中明确包含端口号,它有时也可以包括端口号。 以下是一些可能的 $http_host 内容示例:"www.example.com"、"example.com" 或 "192.168.1.1:8080",如果客户端在请求头中明确包含了端口。如果请求中缺少 Host 头,NGINX 可能会回退到默认服务器名称(如果已配置),或者根据其余配置的不同,可能会导致错误。

配置示例

server {
    listen 80;
    server_name example.com;

    location / {
        return 200 "Host: $http_host";
    }
}

子系统

http

可缓存

上下文

http, server, location, if

确保在到达 NGINX 之前,代理服务器或负载均衡器不会删除 Host 头,因为这会导致变量为空。

$http_host 的值可能包含端口号,如果客户端明确发送了该端口号,可能会导致意外行为,如果处理不当。