2015-06-12 1 views
6

На многих сайтах можно найти этот Nginx location блок:Что такое fastcgi_index для nginx?

location ~ \.php$ { 
    fastcgi_pass 127.0.0.1:9000 
    fastcgi_index index.php 
    ... 
} 

Учитывая official documentation из fastcgi_index, похоже, он используется, когда запросы заканчиваются /. Однако он не соответствует регулярному выражению блока location выше? Я что-то пропустил в отношении директивы fastcgi_index?

ответ

3

Вы правы, если ваша конфигурация 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.

Смежные вопросы