$document_uri

变量 $document_uri 包含请求的 URI,不包括任何查询字符串,并对百分号编码的字符进行了解码。 — NGINX Core (HTTP)

$document_uri NGINX Core (HTTP)

说明

$document_uri 变量在 NGINX 处理请求时被设置,表示用于识别被请求资源的 URI 部分。与包含查询字符串的 $request_uri 变量不同,$document_uri 严格只包含 URI 路径,因此适用于不需要查询字符串的场景。该变量在记录或日志中尤其有用,能够在服务器上跟踪被访问的 URI,从而记录意图资源请求而不受任何 URL 查询参数的干扰。 $document_uri 的值是在请求经过 NGINX 路由系统处理之后确定的,具体是在 location 上下文中。这意味着它可以反映 NGINX 关于 URI 重写或使用特定 location 块所做的决定。$document_uri 的典型值可以从像 "/index.html" 这样的简单路径到像 "/products/item123" 这样的结构化 URI 不等。URI 中的任何百分号编码字符都会被解码,以便在使用该变量时产生更简洁、对人类更友好的输出。 在访问日志、重写或条件语句中使用此变量可以简化配置,特别是在需要基于被访问资源执行特定操作时。例如,日志格式可以包含 $document_uri 以追踪哪些文档被频繁请求。

配置示例

log_format mylog '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$document_uri"';

access_log /var/log/nginx/access.log mylog;

子系统

http

可缓存

上下文

http, server, location, if

请记住 $document_uri 不包含查询字符串;如果需要查询字符串,请使用 $request_uri。

该变量在请求被映射到一个 location 之后才会被设置;请确保你处于一个定义该变量的有效上下文中。