nginx中的fastcgi_index是做什么用的?
What is fastcgi_index in nginx used for?
在很多网站上都可以找到这个 nginx location
块:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php
...
}
鉴于 fastcgi_index
的 official documentation,它似乎是在请求以 /
结尾时使用的。但是,它与上面 location
块的正则表达式不匹配?我是否遗漏了有关 fastcgi_index
指令的内容?
你是对的,如果你的 nginx 配置(在 location
指令之外)没有 index
指令,那么 location
指令永远不会匹配并且 fastcgi_index
指令没用。
如果你的配置中有这样一行
index index.php
然后对 /
的请求将创建到 /index.php
的内部重定向,location
将匹配并调用 fastcgi。 php-fpm 将需要一个指向正在执行的文件的 SCRIPT_FILENAME
参数。通常,配置看起来像这样:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
$fastcgi_script_name
包含匹配脚本的名称,因此 fastcgi_index
被忽略。
至少有一个实例表明 fastcgi_index
有用并被使用:when nginx and php-fpm are on different servers and nginx can't match the index.php file.
在很多网站上都可以找到这个 nginx location
块:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php
...
}
鉴于 fastcgi_index
的 official documentation,它似乎是在请求以 /
结尾时使用的。但是,它与上面 location
块的正则表达式不匹配?我是否遗漏了有关 fastcgi_index
指令的内容?
你是对的,如果你的 nginx 配置(在 location
指令之外)没有 index
指令,那么 location
指令永远不会匹配并且 fastcgi_index
指令没用。
如果你的配置中有这样一行
index index.php
然后对 /
的请求将创建到 /index.php
的内部重定向,location
将匹配并调用 fastcgi。 php-fpm 将需要一个指向正在执行的文件的 SCRIPT_FILENAME
参数。通常,配置看起来像这样:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
$fastcgi_script_name
包含匹配脚本的名称,因此 fastcgi_index
被忽略。
至少有一个实例表明 fastcgi_index
有用并被使用:when nginx and php-fpm are on different servers and nginx can't match the index.php file.