web-dev-qa-db-ja.com

NGINXとGunicornを並行して実行する目的は何ですか?

多くのDjango AmazonのEC2を介したアプリのデプロイでは、HTTPサーバーNGINXとGunicornを使用します。

彼らが実際に何をしているのか、そしてなぜ両方が並行して使用されているのか疑問に思いました。両方を並行して実行する目的は何ですか?

53
noahandthewhale

それらは並行して使用されません。 NGINXはリバースプロキシです。それは最初の列です。着信接続を受け入れ、次にどこに行くべきかを決定します。また、(通常は)CSS、JS、画像などの静的メディアも提供します。また、SSLを介した暗号化、キャッシュなどの他のことも実行できます。

Gunicornは次のレイヤーであり、アプリケーションサーバーです。 NGINXは、着信接続がwww.domain.com用であることを確認し、その接続をGunicornに渡す必要があることを(構成ファイルを介して)認識します。 Gunicornは [〜#〜] wsgi [〜#〜] サーバーであり、基本的には次のとおりです。

webサーバーとWebアプリケーションまたはフレームワーク間のシンプルでユニバーサルなインターフェース

Gunicornの仕事は、Djangoインスタンスを管理および実行することです(開発中にDjango-admin runserverを使用するのと同様)

この設定とは対照的に、mod_wsgiモジュールでApacheを使用します。この状況では、アプリケーションサーバーは実際にはApacheの一部であり、モジュールとして実行されます。

71
Timmy O'Mahony

NginxとGunicornは並列では使用されません。

  • Gunicornは、PythonWebアプリケーションの実行に一般的に使用されるWebサーバーゲートウェイインターフェイス(WSGI)サーバーの実装です。
  • NGINXは、無料のオープンソースの高性能HTTPサーバーとリバースプロキシ、およびIMAP/POP3プロキシサーバーです。
  • 静的コンテンツ、gzip圧縮、ssl、proxy_buffers、その他のHTTP関連のサービスを担当するNginx。gunicornはPython HTTPサーバーであり、nginxと実際のpythonweb-appコードの両方とインターフェースします。動的コンテンツを提供します。

次の図は、nginxとGunicornがどのように相互作用するかを示しています。

Nginx and GunicornOverall idea of nginx and Gunicorn

0
Thusitha Deepal