Nginx
概要
- Nginx は、高速かつ軽量な HTTP サーバとして知られています。
- 主に リバースプロキシ (Reverse Proxy) として、クライアントからのリクエストを受け取り、バックエンドサービス (たとえば uWSGI, Gunicorn など) に転送します。
- 静的ファイル (画像や CSS、JavaScript など) の配信にも使われ、負荷を軽減する役割も担います。
特徴
- 高いパフォーマンス : イベント駆動型 (非同期 I/O) のアーキテクチャにより、同時接続数が多くてもリソース消費が少なく済みます。
- 設定ファイルがシンプル : サーバブロック (server ブロック) や location ブロックを用いて、柔軟に設定を行えます。
- 負荷分散 (Load Balancing) : 複数のバックエンドサーバに対してリクエストを振り分ける機能も持ちます。
代替しうる技術
- Apache HTTP Server : 伝統的で機能豊富な HTTP サーバ。モジュールが多彩で、長く使われています。
- Caddy : 設定が簡単な HTTP/2 対応サーバ。Go 言語で開発され、Let’s Encrypt による SSL/TLS 自動化が特徴。
- HAProxy : 主に負荷分散を得意とするプロキシソフトウェア。TCP レベル、HTTP レベルで高い性能。
uWSGI
概要
- uWSGI は Python の WSGI (Web Server Gateway Interface) を実装するアプリケーションサーバです。
- Nginx などから受け取ったリクエストを Python の WSGI アプリケーション (例: Flask, Django など) に転送し、処理結果を返します。
- 名前の通り、uWSGI プロトコルを実装しており、高速に動作します。
特徴
- マルチプロセス、マルチスレッド : 高い並列処理性能を持ちます。
- 多彩な設定方法 : INI ファイル、YAML ファイルなどでの柔軟な設定が可能。
- Flask/Django/Gunicorn など複数フレームワークに対応 : Python 以外の言語 (Perl, Ruby) と連携するモジュールも存在します。
代替しうる技術
- Gunicorn : シンプルでよく使われる Python WSGI サーバ。Flask や Django を動かすときに人気。
- Waitress : Python 製の純粋な WSGI サーバ。Windows 環境でも簡単に動作。
- uvicorn + FastAPI : 非同期 (ASGI) ベースのサーバ。現代的な Python ウェブ開発で注目度が高い。
Flask
概要
- Flask は Python 製のマイクロフレームワークです。軽量でシンプルな構造が特徴です。
- ルーティング (URL の振り分け) とテンプレート、簡易的な開発用サーバを提供し、拡張やプラグインも豊富に用意されています。
- 「マイクロフレームワーク」であるため、必要に応じて機能を追加していくスタイルが好まれています。
特徴
- シンプルな設計 : 必要最小限の機能のみをコアに持ち、拡張は自由度が高いです。
- 豊富な拡張機能 : SQLAlchemy を使った ORM、LoginManager による認証、JWT、管理画面など。
- 学習コストの低さ : Python の文法に慣れていれば、すぐに理解・開発を始められます。
代替しうる技術
- Django : 大規模開発に向けた “電池付き” フレームワーク。認証や管理画面をフル装備。
- FastAPI : 非同期 (ASGI) を前提とした高性能 API フレームワーク。型ヒントを活用して自動ドキュメント生成が可能。
- Bottle : Flask よりもさらにミニマルな Python フレームワーク。依存も少なく動作が軽快。
まとめ
- Nginx : 高速・軽量なリバースプロキシ/HTTP サーバ。Apache や Caddy といった HTTP サーバが代替候補。
- uWSGI : Python WSGI アプリを動かすアプリケーションサーバ。Gunicorn, Waitress なども同様の役割。
- Flask : シンプルなマイクロフレームワーク。Django や FastAPI、Bottle などが用途に合わせて代替可能。