Docker Compose 入門:Flask + Redisハードニング構成にNGINX を追加する

Docker Compose 入門:Flask + Redisハードイング構成にNGINX を追加する Flask

Docker Compose 入門:Flask + Redis サンプルを本番でも安心して使えるようにハードニングするでは、Docker Compose をはじめよう | Docker ドキュメントのハードニングを行いました。

この記事では、上記構成にさらにNGINXを追加して外部公開窓口を一本化します。

NGINXとは

NGINX(エンジンエックス) は、軽量かつ高速に動作する Webサーバー/リバースプロキシサーバー ソフトウェアです。
2004年に公開されて以来、世界中の大規模サイトやクラウド環境で広く利用されています。


NGINXの役割

  1. Webサーバー
    • 静的コンテンツ(HTML, CSS, JavaScript, 画像など)を直接配信。
    • Apache HTTP Server の代替として利用されることも多い。
  2. リバースプロキシ
    • クライアントからのリクエストを受け取り、バックエンドのアプリケーション(Flask, Node.js, PHP など)に転送。
    • 複数のアプリケーションに振り分ける ロードバランサー としても機能。
  3. TLS(SSL)終端
    • HTTPS 通信の暗号化・復号を NGINX 側で処理し、バックエンドは平文 HTTP で通信できる。
  4. キャッシュ・圧縮
    • 静的リソースのキャッシュや gzip 圧縮で高速化。
  5. セキュリティ機能
    • レート制限(DoS攻撃対策)
    • アクセス制御(IP制限など)
    • セキュリティヘッダの追加(クリックジャッキング対策など)

ハードニング+NGINX 追加構成

Docker Compose をはじめよう | Docker ドキュメントの元構成とハードニング+NGINX 追加構成の比較

元構成とハードニング+NGINX 追加構成の比較

NGINX 追加作業

Docker Compose 入門:Flask + Redis サンプルを本番でも安心して使えるようにハードニングするの構成のdocker-compose.ymlを変更し、nginx.conf(NGINX の設定ファイル)を追加する。

docker-compose.ymlの変更

nginx.confの追加

nginxディレクトリを作成し、下記のnginx.conf を保存する。

この nginx.conf は、以下の役割を持ちます。

  • 外部 8080 ポートでリクエストを受ける
  • 内部 web:8000(Flask+Gunicorn)へ転送
  • セキュリティヘッダを追加して脆弱性を減らす
  • /health 用ルートを定義して、ログ負荷を減らす

動作確認

http://localhost:8080/
http://localhost:8080/health

まとめ

今回の作業で、外部公開は NGINX のみ、Flask(Gunicorn)と Redis は 内部ネットワーク専用になりました。

タイトルとURLをコピーしました