1

PHPとRailsの両方を同じサーバーで実行しています。以前はnginx.confに書き換えルールがありました

location / {
    index index.php; 
}

そしてURLの場合のよう/foo/bar /foo/bar/index.phpに提供されました。

しかし、今はRails(Passenger)も持っているので、このルールではレールにぶつかることはできません。以前にindex.phpが存在するかどうかを確認し、存在しない場合にのみレールをヒットするにはどうすればよいですか。

ありがとう。

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 に答える