$uri
NGINX 中的 $uri 变量返回所请求资源的 URI 部分,不包含域名或协议信息。 — NGINX Core (HTTP)
$uri
NGINX Core (HTTP)
说明
该 $uri 变量在 NGINX 处理 HTTP 请求期间被设置,主要填充为未转义的请求 URI,即 URL 中域名和协议之后的部分。该变量可以包含所请求资源的路径和查询字符串,但不会包含任何额外 server 或 location 指令的修改。$uri 的值在请求处理的早期确定,通常是在 NGINX 解析客户端请求时。这意味着它反映的是客户端最初发送的值,在任何内部重写或重定向之前。 在 server 配置中使用时,$uri 变量允许你基于实际请求的资源做出决定。它在 location 块中尤其有用,可用于访问控制、日志记录或重定向流量。该值通常是表示文件路径或路由的字符串,格式示例为 '/images/photo.jpg' 或 '/api/v1/users'。需要注意的是,如果请求在不同的 location 块中被处理并且该块重写了 URI,则 $uri 将反映该更改。
配置示例
location /images {
alias /var/www/images;
error_page 404 = /404.html;
}
location /api/v1 {
proxy_pass http://backend;
access_log /var/log/nginx/api_access.log;
if ($uri ~* /user/(\d+)) {
# Do something specific for user URIs
}
}子系统
http可缓存
否上下文
http, server, location, if, limit_except⚠
$uri 的值可能会根据在 NGINX 配置中配置的内部重写而改变,因此在用它来匹配特定位置时要小心。
⚠
$uri 不包含查询字符串;如果你需要同时获取 URI 和查询字符串,请使用 $request_uri。