3

NGINX の proxy_pass 構成は何をしますか? たとえば、Amazon の EC2 サービスでホストされている Django アプリがあるとします。

EC2 では、2 つの nginx サーバーの前に 1 つのロード バランサーがあるとします。nginx サーバーは、WSGI サーバーとして Gunicorn を使用する 4 つの django アプリ サーバーを指します。

upstream my-upstream {
 server 12.34.45.65:8000;
 server 13.43.54.56:8000;
 server 13.46.56.52:8000;
 server 14.46.58.51:8000;
}

location / {
proxy_pass http://my-upstream;
}

proxy_pass とは何ですか? この場合、ロードバランサーの URL でしょうか?

4

2 に答える 2

9

proxy_pass の由来であるnginx の HttpProxyModuleを見てください。proxy_pass ドキュメントには次のように書かれています。

このディレクティブは、プロキシされたサーバーのアドレスと、場所がマップされる URI を設定します。

したがって、Nginx に を伝えるときはproxy_pass、「このリクエストをこのプロキシ URL に渡す」と言っているのです。

利用可能なアップストリームに関するドキュメントもあります:

このディレクティブは、ディレクティブ proxy_pass および fastcgi_pass で単一のエンティティとして使用できる一連のサーバーを記述します。

したがって、proxy_pass にアップストリームを使用する理由は、proxy_pass が 1 つの URL を想定しているにもかかわらず、複数の URL を渡したい (したがってアップストリームを使用する) ためです。

ロード バランサーが nginx の前にある場合、ロード バランサーの URL はこの構成に含まれません。

于 2013-04-19T19:54:43.543 に答える
0

次のようにする必要があります: proxy_pass http://my-upstream;

nginx は、4 つの djano+gunicorn インスタンス (my-upstream) ですべてのリクエストを負荷分散します。ロードバランサーは nginx サーバーを指します。

于 2013-04-20T06:51:43.583 に答える