$http_*

变量 $http_ 保存来自客户端请求的特定 HTTP 头的值,前缀为 'http_'。

说明

在 NGINX 中,变量 "$http_" 是用于访问客户端发送的 HTTP 请求头的动态前缀。该变量的语法是 "$http_<header-name>",其中 <header-name> 会转换为小写,且任何连字符会被替换为下划线。例如,如果客户端发送了头 X-Forwarded-For,你可以使用 $http_x_forwarded_for 来访问其值。此功能使 NGINX 能够方便地处理各种头部,通过统一的命名模式轻松访问任意 HTTP 头。

当客户端向服务器发起请求时,所有 HTTP 头都可在请求上下文中获得,NGINX 会在处理请求期间相应地填充 $http_ 变量。这些变量可以在配置文件的不同上下文中使用,例如 serverlocationif 块。通过该变量常见地访问的头包括授权头、自定义应用头,以及像 User-AgentAccept-Encoding 这样的标准头,从而允许基于某些头的存在或其值进行灵活的请求处理或条件处理。

配置示例

server {
    listen 80;
    location /example {
        if ($http_user_agent ~* "Googlebot") {
            return 403;
        }
        add_header X-Your-Header "$http_x_your_header";
    }
}

请记得在形成变量名时将头部名转换为小写,并把连字符替换为下划线,例如 $http_x_forwarded_for

确保这些头部存在于客户端请求中;访问不存在的头部将只会返回空字符串。

在正确的上下文中使用该变量以确保其按预期工作。如果在错误的上下文中调用,可能无法按预期运行。

← 返回所有变量