在许多网站上都可以找到这个Nginx位置块:
location ~ \.PHP${
fastcgi_pass 127.0.0.1:9000
fastcgi_index index.PHP
...
}
鉴于official documentation的fastcgi_index,它似乎在请求以/结尾时使用.但是,它与上面的位置块的正则表达式不匹配?我错过了一些关于fastcgi_index指令的内容吗?
最佳答案
你是对的,如果你的Nginx配置(在location指令之外)没有索引指令,那么location指令永远不会匹配,fastcgi_index指令也没用.
如果您的配置中有这样的行
index index.PHP
然后一个请求/将创建一个内部重定向到/index.PHP,该位置将匹配,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.