サーバー

リバースプロキシとは

リバースプロキシ(Reverse Proxy) とは、クライアント(ブラウザなど)からのリクエストをいったん受け取り、代わりにバックエンドのサーバー(Web アプリや API サーバー)へ転送し、そのレスポンスを再びクライアントに返す「仲介役」の仕組み。


なぜ使うの?(主なメリット)

  1. 複数サーバーへの振り分け・負荷分散

    • 受け口を1つにまとめておき、裏で複数のアプリサーバー(Gunicorn ワーカーや複数ノード)に振り分けられる。

    • トラフィックが増えてもバックエンドを水平に増設しやすい。

  2. SSL/TLS 終端(HTTPS 化)の集中管理

    • バックエンドが HTTP ポート(例:5000番)で動いていても、リバースプロキシが HTTPS(443番)で受けて暗号化を解除→バックエンドに平文で渡せる。

    • 各バックエンドに証明書を入れる必要がなく、証明書管理が楽になる。

  3. キャッシュ機能

    • 画像や静的ファイル、APIレスポンスなどをリバースプロキシ側でキャッシュして高速配信。

    • バックエンドの負荷を下げられる。

  4. ファイアウォール/認証の集中

    • 外部にさらすのはリバースプロキシだけにし、裏のサーバーは内部ネットワークや UNIX ソケットで隠蔽できる。

    • IP 制限や WAF(Web Application Firewall)などをまとめてかけやすい。

  5. URL 書き換え・ヘッダ操作

    • パスやヘッダを書き換えて、バックエンドの構造を隠しつつ柔軟にルーティング可能。


リバースプロキシ vs フォワードプロキシ

種類 役割・向き
フォワード クライアント側 社内ネットワークの端末が外に出るとき使う代理サーバー(アクセス制御)
リバース サーバー側 外部から来たアクセスを裏の複数サーバーに振り分ける Nginx/Apache

Nginx をリバースプロキシとして使うイメージ

   [クライアント(ブラウザ)]
       ↓ HTTP/HTTPS
┌─────────────┐
│     Nginx        │ ← リバースプロキシ
└─────────────┘
       ↓ UNIXソケット or HTTP
┌──────────────┐   ┌──────────────┐
│    Gunicorn App     │ ←  │    Flask アプリ     │
└──────────────┘   └──────────────┘

Nginx がポート 80/443 で受け、内部の UNIX ソケット(または 127.0.0.1:8000 など)を通じて Gunicorn → Flask に繋ぎます。


まとめ

  • リバースプロキシ は“サーバー側の代理人”として動き、外部→内部の橋渡しをする。

  • SSL 終端、負荷分散、キャッシュ、セキュリティ強化など、多彩な機能を一手に引き受けられる。

  • 本番環境ではほぼ必須の構成であり、Nginx や Apache、HAProxy などがよく使われます。

ABOUT ME
いなさく
住んでる家が崩れそうなので、建て替え費用をまかなうために 副業をがんばるサラリーマン
ブログランキング・にほんブログ村へ

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA