0

同じサーバーで 2 つの Rails アプリを実行しています。domain1.com へのリクエストを Rails1 アプリに転送し、domain2.com へのリクエストを Rails2 アプリに転送したいと考えています。nginx.conf を次のように構成しました。

upstream thin1 {
    server 0.0.0.0:3000;
    server 0.0.0.0:3001;
    server 0.0.0.0:3002;
}

upstream thin2 {
    server 0.0.0.0:3003;
    server 0.0.0.0:3004;
    server 0.0.0.0:3005;
}

server {
    listen          80;
    server_name     *.domain1.com;
    root            /path1/;        

    location / {
        try_files $uri/index.html $uri.html $uri @backend;
    }

    location @backend {
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://thin1;
    }   
}

server {
    listen                  80;
    server_name             *.domain2.com;
    root                    /path2/;

    location / {
        try_files $uri/index.html $uri.html $uri @backend;
    }

    location @backend {
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://thin2;
    }   
}

しかし、すべてのリクエスト (domain1.com と domain2.com) は Rails1 アプリに転送されます。何か案が?

4

2 に答える 2

0

名前の付いた場所に2つの異なる名前を使用すると、修正されるはずです。

location @backend1 {
  proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  proxy_pass http://thin1;
}

location @backend2 {
  proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_redirect off;
  proxy_pass http://thin2;
}

(それに応じて、各サーバーのtry_filesディレクティブを変更することを忘れないでください)

于 2012-08-11T12:39:29.733 に答える
0

ホスト名ごとに個別のサーバー構成をセットアップし、各ホストの適切なバックエンドに転送します。

于 2012-08-11T08:49:06.007 に答える