2012-05-11 15 views
2

私はapache/passengerからnginx/unicornに移行しています。私は正常にnginixをロードし、ユニコーンで複数のサイトをホストしましたが、ドメインごとに1つしかありません。どのように:VHostごとに複数のRailsアプリケーション - Passenger RailsBaseURIから移行しますか?

Passengerでは、サブフォルダを介して単一のドメインの下で複数のレールアプリをホストし、ルートの下に単一のhtmlファイルを継続してホストすることができます。たとえば:

<VirtualHost 10.0.0.2> 
    ServerName preview.site.com 
    ServerAlias preview.site.com 

    DocumentRoot /var/www/com.site.preview 

    <Directory /var/www/com.site.preview> 
      AllowOverride all 
      Options -MultiViews 
    </Directory> 

    RailsBaseURI /app-one 
    RailsBaseURI /app-two 
    RailsBaseURI /app-three 

</VirtualHost> 

はそう私にディレクトリを与えるだろう

http://preview.site.com 

に行きます。

http://preview.site.com/app-one 
http://preview.site.com/app-two 
http://preview.site.com/app-three 

このサブフォルダの下に各アプリケーションを実行します。そこにはまだnginx/unicornでこれを行うことができますか?

同様の質問がHow to make unicorn run a Rails 3.0 app under a path?で尋ねられましたが、回答の一部のみを提供しました。

+0

これはnginxの設定ではありません。apache2のようです。 – frhd

+1

?それはまさに私が求めているものなのですから! ... "私はapache/passengerからnginx/unicornに移行しています" ... –

+0

申し訳ありませんが、これは1ヶ月前のことです。 – frhd

答えて

0

あなたがする必要があるのは、locationsをnginx設定の中に定義することです。 serverブロックは、それが動作しているポート上のnginxアプリケーションと、それがリッスンしているURLを定義します。そのブロック内では、次の行を追加します。

location /app-one/ { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass http://127.0.0.1:3000; 
} 

location /app-two/ { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass http://127.0.0.1:4000; 
} 

location /app-three/ { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header Host $host; 
    proxy_pass http://127.0.0.1:5000; 
} 

これは、次のことを前提としています、3000:

  • アプリは、上記の3つのポート上で実行
  • アプリのnginxと同じボックス上で実行します4000、5000

これは、Nginxの最も一般的な用途の1つであるリバースプロキシです。

関連する問題