2012-04-10 32 views
7
server { 
    listen  80; 
    server_name pwta; 
    root html; 

    location /test/{ 
     alias html/test/; 
     autoindex on; 
    } 
    location ~ \.php$ { 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
    } 
} 

Esta configuración funciona. Sin embargo, si se reemplaza location /test/, p. location /testpath/ no funciona (no se especificó ningún archivo de entrada). Asumí como base en la explicación de la directiva de alias que la parte "ubicación" se descarta y, por lo tanto, /testpath/info.php daría como resultado html/test/info.php.nginx alias + directiva de ubicación

Gracias por cualquier sugerencia.

Respuesta

10

nginx alias

server { 
    listen  80; 
    server_name pwta; 
    index index.html index.php; 
    root html; 

    location /testpath/ { 
     alias html/test/; 
    } 
    location ~ ^/testpath/(.+\.php)$ { ### This location block was the solution 
     alias html/test/;  
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$1; 
     include fastcgi_params; 
    } 
    location ~ \.php$ { 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include  fastcgi_params; 
    } 
+0

No entiendo completamente por qué funciona, pero de hecho resuelve el problema. ¿Alguien podría agregar más explicación sobre qué está pasando con ese bloque de ubicación central? – Brad

+0

Al agregar 'alias' se sobrescribirá efectivamente el' $ document_root' a cualquiera que sea el alias. Tenga en cuenta que no afectará a '$ fastcgi_script_name' o' $ request_filename'. Usando el nuevo '$ document_root' junto con regex que coincida con el nombre del archivo, se resuelve en el archivo de script. – Gajus

+0

Tenga en cuenta que el último bloque de ubicación no está haciendo nada cuando la solicitud está bajo '/ testpath /'. – Gajus

8

Tanto los alias y root directivas se utilizan mejor con rutas absolutas. Puede usar rutas relativas, pero son relativas a la opción de configuración prefix utilizada para compilar nginx, y generalmente no son lo que usted desea.

Puede ver esto ejecutando nginx -V y buscando el valor siguiente --prefix=.

Pruébelo usted mismo mirando el registro, encontrará un error "no such file".

+1

Tenga en cuenta que debe ser '-V' no' -v' (debe ser mayúscula, minúscula solo da el número de versión) – Basic

Cuestiones relacionadas