1

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

location / {
    index index.php; 
}

并且在 URL like 的情况下/foo/bar /foo/bar/index.php被提供。

但现在我也有 Rails (Passenger),有了这条规则,我不能撞到铁轨。如何检查之前是否存在 index.php 并仅在不存在时才点击 rails。

谢谢。

4

2 回答 2

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;
}

这些将是此类配置的重要部分,当然它缺少代理配置。 类似应用的更详细示例

于 2012-08-22T09:34:53.060 回答
0

应该try_files

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

        location @passenger {
                passenger_enabled on;
                rails_env development;
        }
}
于 2012-10-11T13:56:44.087 回答