0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0027(2024/01/27)Nginx, uWSGI, Flaskについて

Last updated at Posted at 2025-01-27

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 などが用途に合わせて代替可能。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?