2

apache/passengerからnginx/unicornに移行しています。nginixを正常にロードし、ユニコーンで複数のサイトをホストしましたが、ドメインごとに1つだけです。

Passengerでは、サブフォルダーを介して単一のドメインで複数のRailsアプリをホストし、ルートで単一の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でこれを実行できる離れた場所はありますか?

ユニコーンにパスの下でRails3.0アプリを実行させる方法についても同様の質問がありました。、しかし答えの一部しか提供していません。

4

1 に答える 1

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

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

  • アプリはnginxと同じボックスで実行されます
  • アプリは、前述の 3 つのポートで実行されます: 3000、4000、5000

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

于 2016-03-18T10:40:11.290 に答える