用于NginX配置的PHP和Rails

时间:2012-08-22 08:36:59

标签: php ruby-on-rails nginx rewrite passenger

我在同一台服务器上运行PHP和Rails。 我以前在nginx.conf上有一个重写规则

location / {
    index index.php; 
}

如果提供了/foo/bar /foo/bar/index.php这样的网址,则

但是现在我还有Rails(乘客),按照这个规则,我无法击中轨道。 我如何检查之前是否存在index.php并且只有在没有时才会点击rails。

感谢。

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你需要定义另一个位置块,“点击”轨道并使用当前的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

答案 1 :(得分:0)

try_files

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

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