Amazon の EC2 を介した Django アプリのデプロイの多くは、HTTP サーバー NGINX と Gunicorn を使用します。
それらが実際に何をしているのか、なぜ両方が並行して使用されているのか疑問に思っていました。両方を並行して実行する目的は何ですか?
それらは並行して使用されません。NGINX はリバース プロキシです。一列目です。着信接続を受け入れ、次にどこに行くべきかを決定します。また、(通常) CSS、JS、画像などの静的メディアも提供します。また、SSL による暗号化、キャッシュなどの他のことも実行できます。
Gunicorn は次のレイヤーで、アプリケーション サーバーです。NGINX は、着信接続が対象www.domain.com
であることを認識し、(構成ファイルを介して) その接続を Gunicorn に渡す必要があることを認識します。Gunicorn は、基本的に次のWSGIサーバーです。
Web サーバーと Web アプリケーションまたはフレームワーク間のシンプルでユニバーサルなインターフェース
Gunicorn の仕事は、Django インスタンスを管理および実行することです (django-admin runserver
開発中の使用と同様) 。
このセットアップとは対照的に、mod_wsgi
モジュールで Apache を使用します。この場合、アプリケーション サーバーは実際には Apache の一部であり、モジュールとして実行されます。