2015-06-12 6 views
6

Auf vielen Webseiten können diese nginx location Block:Wofür wird fastcgi_index in nginx verwendet?

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

die official documentation von fastcgi_index Da scheint es, wie es verwendet wird, wenn Anforderungen mit / beenden. Es entspricht jedoch nicht dem regulären Ausdruck des obigen Blocks location? Fehle ich etwas an der fastcgi_index Direktive?

Antwort

3

Sie haben Recht, wenn Sie Ihre nginx-Konfiguration (außerhalb der location Richtlinie) keine index Richtlinie hat, dann ist die location Richtlinie wird nie passen und die fastcgi_index Richtlinie ist nutzlos.

Wenn Sie eine Zeile wie diese auf Ihrer Konfiguration

index index.php 

dann eine Anfrage an / eine interne Umleitung zu /index.php erstellen, die location wird übereinstimmen und fastcgi aufgerufen. php-fpm benötigt einen SCRIPT_FILENAME Parameter, der auf die ausführende Datei verweist. Normalerweise sieht die Konfiguration etwas wie folgt aus:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

$fastcgi_script_name enthält den Namen des angepassten Skript, so wird fastcgi_index ignoriert.

Es gibt mindestens eine Instanz, in der fastcgi_index sinnvoll ist und verwendet wird: when nginx and php-fpm are on different servers and nginx can't match the index.php file.