2012-04-10 31 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; 
    } 
} 

Bu yapılandırma çalışır. Bununla birlikte, location /test/, örn. location /testpath/ çalışmıyor (Giriş dosyası belirtilmemiş). "Konum" bölümünün düştüğü ve böylece /testpath/info.php'un html/test/info.php ile sonuçlanacağı yönergesinin açıklamasıyla ilgili temel aldım.nginx alias + konum yönergesi

Herhangi bir öneriniz için teşekkürler.

cevap

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

Bunun nedenini tam olarak anlamıyorum, ancak gerçekten sorunu çözüyor. Herhangi bir orta konum bloğu ile neler olup bittiğine dair daha fazla açıklama ekleyebilir misiniz? – Brad

+0

Takma ad ekleme, "$ document_root" öğesinin takma adın ne olursa olsun etkili bir şekilde üzerine yazılmasını sağlar. $ Fastcgi_script_name' veya '$ request_filename' etkilemeyeceğini unutmayın. Yeni '$ document_root 'dosyasını dosya adıyla eşleşen regex ile birlikte kullanarak betik dosyasına dönüşür. – Gajus

+0

Not Son konum bloğu, istek// testpath/'altında olduğunda hiçbir şey yapmıyor. – Gajus

8

Hem alias ve root direktifleri iyi mutlak yollarla kullanılır. Göreli yolları kullanabilirsiniz, ancak nginx'i derlemek için kullanılan prefix yapılandırma seçeneğine göre göreceli ve genellikle istediğiniz gibi değillerdir.

Bunu nginx -V gerçekleştirerek ve --prefix= izleyen değeri bularak görebilirsiniz.

Günlüğe bakarak bunu kendinize kanıtlayın, "böyle bir dosya yok" hatası bulacaksınız.

+1

Not -V değil '-v' olmalıdır (büyük olmalı, küçük harf sadece sürüm numarası verir) – Basic