在许多网站上都可以找到这个nginx location
块:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.php
...
}
鉴于fastcgi_index
的{{3}},似乎在请求以/
结尾时使用。但是,它与上面的location
块的正则表达式不匹配?我错过了关于fastcgi_index
指令的内容吗?
答案 0 :(得分:6)
你是对的,如果你的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。