💭
WSGI 概要
上の記事より画像を引用しています.
Nginx:webサーバ(root権限で動く)
Gunicorn:WSGIサーバ(user権限で動く)
Django (Flaskなど):アプリケーション(root権限で動く)
- NginxとDjangoはふつう通信できない.
- WSGIという通信プロトコルによってNginxとDjangoの通信を確立している.
- Gunicornは間に入ることで互いを結びつける役割
詳しめ
- Djangoはroot権限でプログラムを実行している
- Gunicornは(セキュリティの観点から)user権限でDjangoにアクセスするため,80番や443番ポートで待ち受けができない[1].そのため,ユーザーがポート番号を指定してwebアプリにアクセスする必要が出てくる.
- Nginxを挟むことで80,443ポートでの待ち受けを行い,クライアント側からURLのみでwebアプリへのアクセスを可能とする.
-
Linuxにおいてユーザー権限の場合,80番や443番ポートが開けない? ↩︎
Discussion