

Web開発を Django でおこなう際、大抵の情報には、いわゆるWebサーバの Apache や nginx の上で Django
を動かす構成になっています。  
しかし、Djangoはそれ自体がWebサーバであり、わざわざ Apache や nginx を使用する理由がわかりません。  
ものによっては、Django
は「アプリケーションサーバ」であるので、その下に「Webサーバ」が必要であるというようなことも書いてありますが、しかし、Django
のプロセスが動いていれば特に必要ないように思います。  
Django のチュートリアルをなぞると、特にWebサーバのサービスを別に走らせたりせずに直接HTTP通信ができています。

これらは Django に限った話ではないのかもしれませんが、初学者ゆえに背景がわからず混乱しています。  
Apache/nginx はなぜ必要なのでしょうか？ Django のみでWebサービスをホストしてはいけないのでしょうか？


CC BY-SA 3.0
2015-11-28T08:41:53.130
19405
2015-11-28T19:57:53.643
565
question
python apache nginx django
Django の下に Apache や nginx が必要なのはなぜですか？


Djangoに限らず、一般的にはアプリケーションサーバを直接公開せず、Apache や nginx などのWebサーバを介して公開します。

これはアプリケーションサーバではCPU・メモリ効率が悪いため、画像・スタイルシート・スクリプトファイルなどの静的なファイル高速なウェブサーバに任せるため、というのが大きな理由です。

その他、アクセス制御などのインフラ周りの処理はアプリケーション側ではなくWebサーバに持たせたい、複数のアプリケーションサーバを利用する場合にも柔軟に対応出来る、Webサーバが持つ高機能な仕組みを利用したい
(アプリケーションサーバはWebサーバとして低機能なことが多い) などの理由もあります。


CC BY-SA 3.0
2015-11-28T19:57:53.643
19420
2015-11-28T19:57:53.643
76
19405
answer