$http_*

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

$http_* NGINX Core (HTTP)

说明

在 NGINX 中,变量 "$http_" 是用于访问客户端发送的 HTTP 请求头的动态前缀。该变量的语法是 "$http_",其中 `` 会转换为小写,且任何连字符会被替换为下划线。例如,如果客户端发送了头 `X-Forwarded-For`,你可以使用 `$http_x_forwarded_for` 来访问其值。此功能使 NGINX 能够方便地处理各种头部,通过统一的命名模式轻松访问任意 HTTP 头。 当客户端向服务器发起请求时,所有 HTTP 头都可在请求上下文中获得,NGINX 会在处理请求期间相应地填充 `$http_` 变量。这些变量可以在配置文件的不同上下文中使用,例如 `server`、`location` 和 `if` 块。通过该变量常见地访问的头包括授权头、自定义应用头,以及像 `User-Agent` 或 `Accept-Encoding` 这样的标准头,从而允许基于某些头的存在或其值进行灵活的请求处理或条件处理。

配置示例

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

子系统

http

可缓存

类型

前缀变量

上下文

http, server, location, if

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

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

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