我有PHP和Rails運行在同一臺服務器上。 我曾經有一個重寫規則在nginx.confPHP和Rails的NginX配置
location/{
index index.php;
}
和URL的情況下,像/foo/bar
/foo/bar/index.php
端上來。
但是現在我也有Rails(乘客),並且有了這個規則,我不能打鐵軌。 如何檢查前面是否存在index.php,如果沒有,則只打開欄杆。
謝謝。
我有PHP和Rails運行在同一臺服務器上。 我曾經有一個重寫規則在nginx.confPHP和Rails的NginX配置
location/{
index index.php;
}
和URL的情況下,像/foo/bar
/foo/bar/index.php
端上來。
但是現在我也有Rails(乘客),並且有了這個規則,我不能打鐵軌。 如何檢查前面是否存在index.php,如果沒有,則只打開欄杆。
謝謝。
應該try_files
server {
try_files $uri $uri/ $uri/index.php @passenger;
location @passenger {
passenger_enabled on;
rails_env development;
}
}
如果我理解你的問題,你將需要定義另一個位置塊,「命中」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
什麼是UNIX:/tmp/thin.0.socket ;?它應該是乘客的插座嗎? –
它應該是任何適用於您的導軌的應用程序的套接字。瘦就是這樣一個例子。 – liepumartins