$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 时要小心,因为如果未正确评估,可能导致意外行为。