1

私の質問は、次のシナリオで Debian 6 で Phusion Passenger + Nginx を使用して、ポート 80 のすべてのインスタンスを適切な同一のサブドメインにマップする方法です。

注:私はRuby on Railsとサーバーホスティングの初心者です。私のビジョンを質問として表現することはできません。間違っているか訂正してください。

こんにちは、私は ruby​​ on rails を使用して 1 つの製品を開発しており、32 GB RAM と 8 コア サーバー プロセッサを備えた専用サーバーでホストします。各クライアントには、個別の DB と個別の Rails インスタンスが必要です。私は複製しています-各クライアントのコードを別々のフォルダーに複製し、異なるデータベース名を付けて、それぞれが異なるインスタンスとして機能するようにします。ソースコードは基本的に全てのクライアントで同じですが、データベース名だけが違うので、ソースコードを別のフォルダに入れ、クライアントごとに別々のRailsアプリケーションとして見つめています。

例えば:

1 つのプライマリ一時ドメインを持っています

www.product.com

クライアントごとに、同じポート(80)で同じサーバーにマップされた別のサブドメインが必要ですが、レールインスタンス名は異なります

www.client1.product.com
www.client2.product.com
www.clientn.product.com

rails instance を起動するとわかるように、それぞれが別々のポート番号で起動します

client1 with start at port 3001
client2 with start at port 3002
client3 with start at port 3003

私の質問は、Debian 6でPhusion Passenger + Nginxを使用して、ポート80のすべてのインスタンスを適切な同一のサブドメインにマップする方法です

アクセスしたら

www.client4.product.com 、ポート 3004 でアプリを実行する必要があります

4

1 に答える 1

1

今までに解決策を見つけていただければ幸いですが、stackoverflow アーカイブのために、回答を提供します。

一般的には、nginx でリバース プロキシ ( http://wiki.nginx.org/RubyonRailsMongrel ) を使用する必要がありますが、アップストリームは、専用の Rails アプリケーションを実行する Passenger|thin|unicorn|puma|mongrel (お気に入りを選択) サーバーになります (クライアントの実行環境を分離するために、複製されたコードを使用します。) この方法で負荷分散を行うことができます。

ここで、Passenger の使用を規定します。nginx をパッセンジャー拡張でコンパイルすると、非常に簡単なセットアップを使用できます。(より良い説明については、 http://www.modrails.com/documentation/Users%20guide%20Nginx.htmlにアクセスしてください)

server {
  listen 80;
  listen [::]:80 default_server ipv6only=on; # please for a better world be IPv6 compliant !
      server_name www.client1.product.com;
  root /my/rails/app1;
      passenger_enabled on;
}
server {
  listen 80;
  listen [::]:80 default_server ipv6only=on;
      server_name www.client2.product.com;
  root /my/rails/app2;
      passenger_enabled on;
}

.......

于 2013-09-15T17:00:25.287 に答える