40

私の状況は次のとおりです。1つのフロントエンドサーバーでnginxを実行し、複数のバックエンドサーバーでapache+passengerをさまざまなrailsアプリケーションで実行します。負荷分散を実行しようとはしていません。私がする必要があるのは、URLに基​​づいて特定のサーバーへの接続をプロキシするようにnginxを設定することです。IE、client.domain.comはxxx100:80を指す必要があり、client2.domain.comはxxx101:80を指す必要があります。

私はnginxにあまり詳しくありませんが、自分の状況に合った特定の構成をオンラインで見つけることができませんでした。

ありがとう。

4

2 に答える 2

40

さまざまなURLをserver {}ブロックと照合して、各サーバーブロック内でリバースプロキシ設定を行うことができます。

以下、イラスト。

server { 
  server_name client.domain.com;

  # app1 reverse proxy follow
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://x.x.x.100:80;

}

server { 
  server_name client2.domain.com;

  # app2 reverse proxy settings follow
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://x.x.x.101:80;
}

また、必要に応じて、各ブロックにNginx設定(やerror_pageなど)を追加することもできます。access_logserver {}

于 2012-11-05T21:56:00.803 に答える
28

@mohamnagのコメントは正しいです。proxy_pass内でのみ許可されますlocation

見る:

http://wiki.nginx.org/HttpProxyModule#proxy_pass

https://www.nginx.com/resources/admin-guide/reverse-proxy/

したがって、正しい構成は次のようになります

server { 
    server_name client.domain.com;

    location / {
        # app1 reverse proxy follow
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://x.x.x.100:80;
    }
}

server { 
    server_name client2.domain.com;

    location / {
        # app2 reverse proxy settings follow
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://x.x.x.101:80;
    }
}
于 2015-07-06T12:01:04.473 に答える