$http_*
变量 $http_ 保存来自客户端请求的特定 HTTP 头的值,前缀为 'http_'。
NGINX Core (HTTP)
·
http
·前缀变量 ·
可缓存: 是
说明
在 NGINX 中,变量 "$http_" 是用于访问客户端发送的 HTTP 请求头的动态前缀。该变量的语法是 "$http_<header-name>",其中 <header-name> 会转换为小写,且任何连字符会被替换为下划线。例如,如果客户端发送了头 X-Forwarded-For,你可以使用 $http_x_forwarded_for 来访问其值。此功能使 NGINX 能够方便地处理各种头部,通过统一的命名模式轻松访问任意 HTTP 头。
当客户端向服务器发起请求时,所有 HTTP 头都可在请求上下文中获得,NGINX 会在处理请求期间相应地填充 $http_ 变量。这些变量可以在配置文件的不同上下文中使用,例如 server、location 和 if 块。通过该变量常见地访问的头包括授权头、自定义应用头,以及像 User-Agent 或 Accept-Encoding 这样的标准头,从而允许基于某些头的存在或其值进行灵活的请求处理或条件处理。
上下文http, server, location, if
配置示例
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。
⚠
确保这些头部存在于客户端请求中;访问不存在的头部将只会返回空字符串。
⚠
在正确的上下文中使用该变量以确保其按预期工作。如果在错误的上下文中调用,可能无法按预期运行。