$request_uri

变量 $request_uri 包含客户端发送的原始请求 URI(如果存在,则包括查询字符串)。 — NGINX Core (HTTP)

$request_uri NGINX Core (HTTP)

说明

$request_uri 变量是 NGINX 的一个核心变量,用于捕获客户端请求的完整 URI。它包括路径和查询字符串(如果有)。它在请求处理期间被设置,具体是在 NGINX 从客户端读取请求行时,这使得可以基于该 URI 创建响应。该变量对于请求路由、生成日志以及根据需要创建重定向或重写非常重要。 $request_uri 的典型值可以是类似 "/products/item?id=123" 或 "/api/v1/users" 的路径,前者包含查询字符串而后者不包含。这使得 $request_uri 成为从用户角度引用精确请求的全面方式。它通常与其他变量结合使用,用于记录请求、控制访问,并根据请求的类型或参数优化响应行为。

配置示例

location /api {
    if ($request_uri ~* "/products") {
        # Handle product requests
        proxy_pass http://backend;
    }
}

location / {
    log_format main '$remote_addr - $remote_user [$time_local] "$request $request_uri" $status $body_bytes_sent';
    access_log /var/log/nginx/access.log main;
}

子系统

http

可缓存

上下文

http, server, location, if

确保仅在需要完整 URI 时使用 $request_uri。如果只需要不带查询字符串的路径,考虑改用 $uri。

在条件块中使用 $request_uri 时要小心,因为如果未正确评估,可能导致意外行为。