サーバー上で実行したい 2 つのアプリがあります。「デフォルト」アプリにしたいアプリの 1 つです。つまり、特定のパスを除い/foo
て、すべての URL をデフォルトでこのアプリに送信する必要があります。次のように呼び出します。
http://mydomain.com/ -> app1
http://mydomain.com/apples -> app1
http://mydomain.com/foo -> app2
私の 2 つのラック アプリは次のようにインストールされます。
/var
/www
/apps
/app1
app.rb
config.ru
/public
/app2
app.rb
config.ru
/public
app1 -> apps/app1/public
app2 -> apps/app2/public
(app1
とapp2
は、それぞれのアプリのパブリック ディレクトリへのシンボリック リンクです)。これは、ここで説明されているサブ URI の Passenger セットアップです: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_rack_to_sub_uri
次の構成では/foo
、app2 に移動しました。
server {
listen 80;
server_name mydomain.com;
root /var/www;
passenger_enabled on;
passenger_base_uri /app1;
passenger_base_uri /app2;
location /foo {
rewrite ^.*$ /app2 last;
}
}
では、app1 に他のすべてを取得させるにはどうすればよいでしょうか。私は以下を試しました(location /foo
ディレクティブの後に配置されています)が、無限の内部リダイレクトで500を取得します:
location / {
rewrite ^(.*)$ /app1$1 last;
}
ディレクティブがその無限のリダイレクトを防ぐことを望んでいましたlast
が、そうではないと思います。私の/foo
書き直しはまだ機能します。そして、私はまだ行くことができますhttp://mydomain.com/app1
。
何か案は?ありがとう!