$http_user_agent

$http_user_agent 变量包含客户端发送的 User-Agent HTTP 请求头的值。 — NGINX Core (HTTP)

$http_user_agent NGINX Core (HTTP)

说明

NGINX 中的 $http_user_agent 变量用于获取来自入站 HTTP 请求的 User-Agent 字符串。该字符串标识发起请求的客户端软件,通常包括客户端的浏览器类型、版本和操作系统等信息。User-Agent 头通常由网页浏览器、移动应用和各种用户代理设置,用于告知服务器它们的能力和特性。需要注意的是,该变量在服务器接收请求时的请求处理阶段被填充,可用于日志记录、处理或条件配置。 当 NGINX 服务器处理入站请求时,它会解析各种 HTTP 头,其中就包括 User-Agent。如果请求中存在 User-Agent 头,则其值会存储在 $http_user_agent 变量中,从而允许服务器管理员根据发起请求的客户端类型制定规则。例如,管理员可能会根据 User-Agent 字符串向不同的浏览器或设备提供不同的内容。该变量的典型值可能包括像 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" 这样的字符串(适用于 Google Chrome),或像 "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" 这样的字符串(适用于 iOS 上的 Safari)。

配置示例

server {
    listen 80;

    location / {
        access_log /var/log/nginx/access.log;
        if ($http_user_agent ~* "MSIE") {
            return 403;  # Deny access to Internet Explorer users
        }
        # other configuration...
    }
}

子系统

http

可缓存

上下文

http, server, location, if

确保在请求中设置 User-Agent 头;否则,该变量将为空。

如果未正确解析 User-Agent,在条件块中不当使用可能导致意外行为。

注意 user-agent 伪造;客户端可以修改该头,使其在安全决策中不可靠。