$fastcgi_path_info

变量 $fastcgi_path_info 包含 FastCGI 请求中紧随脚本名后的额外路径信息。 — NGINX Core (HTTP)

$fastcgi_path_info NGINX Core (HTTP)

说明

在与 FastCGI 应用交互时,NGINX 会使用 $fastcgi_path_info 变量。它提供了可能出现在脚本名之后的额外路径信息(即 URL 中的附加部分)。当处理需要将 URL 的某些元素传递给后端应用以进行处理的 RESTful API 或 Web 应用时,这个值尤其重要。例如,如果对 /api/users/123 发出请求,其中的 '123' 会被视为 path info,并作为 $fastcgi_path_info 变量的值返回。 该变量主要在 NGINX 的 FastCGI 配置中设置,特别是在处理脚本请求时的 server block 中。它使 NGINX 能够将传入请求正确映射到相应的 FastCGI 应用,从而实现更灵活的路由并与可能依赖解析该 path info 的各类 web frameworks 集成。需要注意的是,如果 URL 在脚本名之后没有任何额外的路径段,则 $fastcgi_path_info 将为空。 在典型场景下,当在 NGINX 中定义 FastCGI location block 时,你会设置指向 FastCGI 脚本的路径,同时允许 NGINX 通过该变量管理额外的路径信息,该信息可以被相应的 Web 应用利用。

配置示例

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

子系统

http

可缓存

上下文

http, server, location, if

请确保在 fastcgi_param 设置中定义 PATH_INFO,以确保 NGINX 将其正确传递给后端。

如果未设置 SCRIPT_FILENAME,可能会导致错误,因为路径需要为 FastCGI 脚本完全解析。

并非所有 FastCGI 应用都能正确处理路径信息,因此你应该测试你的应用以确保其按预期工作。