2012-11-01 9 views
49

Amazon EC2のDjangoアプリのデプロイメントの多くは、HTTPサーバーNGINXとGunicornを使用しています。NGINXとGunicornは並行してどのような目的を持っていますか?

私は彼らが実際に何をしているのか、なぜ両方が並行して使用されているのだろうと思っていました。両方を並行して実行する目的は何ですか?

+2

[この質問](http://stackoverflow.com/questions/13004484/deploying-django-with-gunicorn-and-nginx/13004973#13004973)を参照してください。これは、ティミーの答えよりも少し詳細です。 –

+0

@BurhanKhalidが助けてくれてありがとう、 – noahandthewhale

答えて

65

これらは並行して使用されません。 NGINXはreverse proxyです。それは最初の行です。着信接続を受け入れ、次にどこに行くべきかを決定します。また、(通常)CSS、JS、イメージなどの静的メディアも提供します。 SSLを介した暗号化、キャッシングなどの他の処理を行うこともできます。

Gunicornは次のレイヤーで、application serverです。 NGINXは、着信接続がwww.domain.comであることを認識し、(接続設定ファイルを介して)その接続をGunicornに渡す必要があることを認識します。 Gunicornの仕事はと類似(Djangoのインスタンス(複数可)を管理し、実行することで、WebサーバーとWebアプリケーション間の

シンプルかつ汎用インタフェースまたは

をフレームワーク:Gunicornは基本的にWSGIサーバーですdjango-admin runserverを開発中に使用)

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

+0

@Timmy O'Mahony、wsgiファイル(djangoプロジェクトを作成するときに来る)とgunicornの違いは何ですか – Shiva

+3

[この回答](http://serverfault.com/questions/220046/why -is-setting-nginx-as-a-reverse-proxy-a-good-idea)は、nginxの詳細と利点を深く理解しています。 –

関連する問題