$request_filename

$request_filename 变量包含客户端所请求文件的完整路径。 — NGINX Core (HTTP)

$request_filename NGINX Core (HTTP)

说明

$request_filename 变量在处理请求时由 NGINX 设置,提供对所请求资源的完整文件系统路径。它是基于请求 URI 以及配置中指定的 root 或 alias 指令构建的。当发起请求时,NGINX 会将相关上下文中定义的 root 路径与 URI 组合,得到服务器上可找到所请求文件或目录的绝对路径。例如,如果对 '/images/logo.png' 发出请求,且 server block 的 root 设置为 '/var/www/html',那么 $request_filename 将是 '/var/www/html/images/logo.png'。\n\n该变量对需要访问文件的模块特别有用,例如处理静态文件、启用自定义日志格式或使用 `try_files` 指令实现条件逻辑。$request_filename 会针对每个请求上下文重新计算,确保其准确反映当前请求的目标。常见用途包括记录所请求的文件路径,或在使用 `try_files` 或其他配置指令进行进一步处理之前检查该文件是否存在。

配置示例

location /images/ {
    root /var/www/html;
    if (!-f $request_filename) {
        return 404;
    }
}

子系统

http

可缓存

上下文

http, server, location, if

确保正确设置 root 或 alias,以避免路径解析错误。

不要将 $request_filename 与 $document_root 混淆,因为后者只返回根路径,不会附加请求 URI。

在 rewrite 指令中使用 $request_filename,如果在递归处理方面没有正确管理,可能产生意外结果。