2012-08-22 259 views
1

我有PHP和Rails運行在同一臺服務器上。 我曾經有一個重寫規則在nginx.confPHP和Rails的NginX配置

location/{ 
    index index.php; 
} 

和URL的情況下,像/foo/bar/foo/bar/index.php端上來。

但是現在我也有Rails(乘客),並且有了這個規則,我不能打鐵軌。 如何檢查前面是否存在index.php,如果沒有,則只打開欄杆。

謝謝。

回答

0

應該try_files

server { 
     try_files $uri $uri/ $uri/index.php @passenger; 

     location @passenger { 
       passenger_enabled on; 
       rails_env development; 
     } 
} 
1

如果我理解你的問題,你將需要定義另一個位置塊,「命中」rails並使用當前的try_files。像這樣的東西。

index index.html index.php # better place this outside location block 

upstream thin { 
    unix:/tmp/thin.0.socket; # this could be any other rails server socket 
    unix:/tmp/thin.1.socket; 
} 

location/{ 
    try_files $uri @rails; 
} 

location @rails { 
    proxy_pass http://thin; 
} 

這些將是這種配置的重要組成部分,當然它缺乏代理配置。 a more detailed example for similar application

+0

什麼是UNIX:/tmp/thin.0.socket ;?它應該是乘客的插座嗎? –

+0

它應該是任何適用於您的導軌的應用程序的套接字。瘦就是這樣一個例子。 – liepumartins