2015-06-12 13 views
6

Su molti siti si possono trovare questo nginx location blocco:A cosa serve fastcgi_index in nginx?

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

Data la official documentation di fastcgi_index, sembra che viene utilizzata quando le richieste si concludono con /. Tuttavia, non corrisponde all'espressione regolare del blocco location sopra? Mi manca qualcosa sulla direttiva fastcgi_index?

risposta

3

Hai ragione, se la configurazione nginx (al di fuori della direttiva location) non ha direttiva index, allora la direttiva location non sarà mai soddisfatta e la direttiva fastcgi_index è inutile.

Se si dispone di una linea come questa della configurazione

index index.php 

poi una richiesta di / creerà un reindirizzamento interno al /index.php, il location corrisponderà e FastCGI verrà chiamato. php-fpm avrà bisogno di un parametro SCRIPT_FILENAME che punti il ​​file che si sta eseguendo. Normalmente, la configurazione simile a questa:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

$fastcgi_script_name contiene il nome dello script abbinati, in modo fastcgi_index viene ignorato.

C'è almeno un'istanza in cui fastcgi_index è utile e utilizzato: when nginx and php-fpm are on different servers and nginx can't match the index.php file.