単純に /hoge と /fuga に別々のアプリケーションをdeployするのなら、話は単純で、以下のチュートリアルのとおりなんですが。
問題は passenger_base_uri に「/」を指定できないこと。
方針としては、「/」のアプリケーションと「/hoge」のアプリケーションは別々のポートで配備して、かつ「/」をデプロイした側から、リバースプロキシで「/hoge」に飛ばしてあげる、という感じです。Pound辺りと組み合わせてもいいんですが、Nginxだけで完結できます。
1 2 | # base_uri対応の前準備(例) ln -s /var/www/rails-apps/hoge/public /var/www/passenger/hoge |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | http { #.... passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15; passenger_ruby /usr/bin/ruby1.8; server { # for "/" setting listen 8080; server_name dev.local.udzura.jp; passenger_enabled on; rails_env production; root /var/www/rails-apps/root-app/public; error_page 404 /404.html; error_page 500 502 503 504 /error.html; location /hoge { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host:$server_port; # その他、継承したいヘッダーを追加 proxy_pass http://127.0.0.1:8081/hoge; } } server { # for "/hoge" setting listen 8081; server_name dev.local.udzura.jp; # 8081番ポートへの直接アクセスを禁止 allow 127.0.0.1; deny all; passenger_enabled on; rails_env production; root /var/www/passenger; passenger_base_uri /hoge; error_page 404 /hoge/404.html; error_page 500 502 503 504 /hoge/500.html; } #.... } |
これで、「/」と「/hoge」とでは別のアプリケーションを参照してくれます。




