💭

WSGI 概要

2023/11/11に公開

https://view-s.co.jp/product/webapp/concept/
上の記事より画像を引用しています.

Nginx:webサーバ(root権限で動く)
Gunicorn:WSGIサーバ(user権限で動く)
Django (Flaskなど):アプリケーション(root権限で動く)

  • NginxとDjangoはふつう通信できない.
  • WSGIという通信プロトコルによってNginxとDjangoの通信を確立している.
  • Gunicornは間に入ることで互いを結びつける役割

詳しめ

https://msiz07-flask-docs-ja.readthedocs.io/ja/latest/deploying/gunicorn.html?highlight=gunicorn#binding-externally

  • Djangoはroot権限でプログラムを実行している
  • Gunicornは(セキュリティの観点から)user権限でDjangoにアクセスするため,80番や443番ポートで待ち受けができない[1].そのため,ユーザーがポート番号を指定してwebアプリにアクセスする必要が出てくる.
  • Nginxを挟むことで80,443ポートでの待ち受けを行い,クライアント側からURLのみでwebアプリへのアクセスを可能とする.
脚注
  1. Linuxにおいてユーザー権限の場合,80番や443番ポートが開けない? ↩︎

Discussion