プロキシとリバースプロキシ - 役割の違い

入門 | 10分 で読める | 2026.05.02

公式ドキュメント

この記事の要点

フォワードプロキシはクライアント側の代理、リバースプロキシはサーバー側の代理
• フォワードプロキシは匿名化やキャッシュに使われ、リバースプロキシは負荷分散や SSL 終端に使われる
• nginx / Cloudflare など主要ツールはどちらも対応可能

プロキシとは

プロキシ(Proxy)とは、クライアントとサーバーの間に入り、通信を仲介・中継するサーバーのことです。「代理」という意味の通り、クライアントやサーバーの代わりに通信を行います。

なぜ必要か: 直接通信ではなくプロキシを経由することで、セキュリティ強化、パフォーマンス改善、アクセス制御などが可能になります。

フォワードプロキシとリバースプロキシの違い

プロキシには大きく分けて2種類あります。どちらの側の代理をするかで役割が異なります。

項目フォワードプロキシリバースプロキシ
代理する側クライアント側サーバー側
設定する側クライアント(ユーザー)が設定サーバー管理者が設定
クライアントから見た位置自分の前(明示的に設定)サーバーだと思って接続
主な用途匿名化、キャッシュ、アクセス制御負荷分散、SSL 終端、キャッシュ
典型例企業の社内プロキシ、VPNnginx、HAProxy、Cloudflare CDN

フォワードプロキシの動作

[クライアント] → [フォワードプロキシ] → [インターネット] → [サーバー]
    ↑                  ↑
    設定する        クライアントの代理

クライアントが「このプロキシ経由で通信してください」と設定します。サーバーから見ると、プロキシの IP アドレスからアクセスされているように見えます。

リバースプロキシの動作

[クライアント] → [インターネット] → [リバースプロキシ] → [バックエンドサーバー]
                                         ↑                     ↑
                                    サーバーの代理         複数台に分散可能

クライアントは何も設定せず、通常通りサーバーにアクセスします。実際にはリバースプロキシが受け取り、背後のサーバーに転送します。

ポイント: フォワードプロキシはクライアントを隠し、リバースプロキシはサーバーを隠す構造です。どちらも「中継」という意味では同じですが、目的と設定者が異なります。

フォワードプロキシの典型的な用途

1. 匿名化・プライバシー保護

クライアントの IP アドレスを隠してサーバーにアクセスできます。

# curl でプロキシ経由アクセス
curl -x http://proxy.example.com:8080 https://api.example.com/

2. アクセス制御・フィルタリング

企業ネットワークで特定サイトへのアクセスを制限したり、ログを記録したりします。

社員 PC → 社内プロキシ → インターネット
           ↑
        許可リスト / ブロックリスト
        アクセスログ記録

3. キャッシュによる高速化

よくアクセスされるコンテンツをプロキシ側でキャッシュし、外部へのリクエストを削減します。

実践メモ: Squid や Privoxy などがフォワードプロキシとして有名です。ブラウザの「プロキシ設定」で指定するのがフォワードプロキシです。

リバースプロキシの典型的な用途

1. 負荷分散(ロードバランシング)

複数のバックエンドサーバーにリクエストを振り分け、負荷を分散します。

# nginx のリバースプロキシ設定例
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}

2. SSL/TLS 終端

リバースプロキシで HTTPS を終端し、バックエンドへは HTTP で転送します。証明書管理を一元化できます。

[クライアント] --HTTPS--> [リバースプロキシ] --HTTP--> [バックエンド]
                              ↑
                          SSL 終端
                        証明書はここだけ

3. キャッシュ・CDN

静的コンテンツをエッジサーバー(リバースプロキシ)でキャッシュし、オリジンサーバーへの負荷を減らします。

# nginx のキャッシュ設定例
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;

server {
    location /static/ {
        proxy_cache my_cache;
        proxy_pass http://backend;
    }
}

4. セキュリティ強化

バックエンドサーバーを外部から隠蔽し、攻撃の対象範囲を限定します。

ポイント: リバースプロキシは単一のエントリーポイントとして機能します。クライアントからは1台のサーバーに見えますが、裏側では複数のサーバーが処理を分担しています。

主要ツールとその位置付け

ツールフォワードプロキシリバースプロキシ特徴
nginx○(設定次第)◎(主用途)高性能、設定が柔軟、静的コンテンツ配信も得意
Apache httpd○(mod_proxy)○(mod_proxy)老舗、リバースプロキシより Web サーバーとして有名
HAProxy×負荷分散特化、L4/L7 対応、高可用性
Squid◎(主用途)○(設定次第)フォワードプロキシの定番、キャッシュ得意
Cloudflare CDN×グローバル CDN、DDoS 対策、WAF 機能付き
Envoy×サービスメッシュで人気、動的設定可能

nginx の設定例比較

# フォワードプロキシ設定(簡易版)
server {
    listen 8080;
    resolver 8.8.8.8;
    location / {
        proxy_pass $scheme://$host$request_uri;
    }
}
# リバースプロキシ設定
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

注意: nginx をフォワードプロキシとして使う場合、セキュリティ設定が不十分だとオープンプロキシになり、第三者に悪用される危険があります。本番環境ではallow/denyでアクセス制限を必ず設定してください。

Cloudflare の位置付け

Cloudflare はリバースプロキシ型 CDNです。ユーザーは Cloudflare の DNS を設定するだけで、以下が自動で提供されます:

  • グローバルなリバースプロキシ(エッジサーバー)
  • DDoS 攻撃の緩和
  • SSL/TLS 証明書の自動発行
  • 静的コンテンツのキャッシュ
  • Web Application Firewall(WAF)
[ユーザー] → [Cloudflare エッジ] → [オリジンサーバー]
                  ↑
            リバースプロキシとして動作
           キャッシュ / WAF / DDoS 対策

ユーザーから見ると、Cloudflare のサーバーに接続しているように見えます。実際のオリジンサーバーの IP は隠されます。

実践メモ: Cloudflare は無料プランでも強力なリバースプロキシ機能を提供します。小規模サイトでも導入するだけで、パフォーマンスとセキュリティが大幅に向上します。

プロキシの透過性

種類透過性クライアント設定サーバーから見える IP
透過フォワードプロキシ透過的不要(ネットワーク層で自動転送)プロキシの IP
非透過フォワードプロキシ非透過必要(手動設定)プロキシの IP
リバースプロキシ完全透過不要(普通にアクセス)プロキシの IP(X-Forwarded-For で元 IP 取得可)

X-Forwarded-For ヘッダー

リバースプロキシを経由すると、バックエンドサーバーにはプロキシの IPが届きます。元のクライアント IP を知るために、X-Forwarded-For ヘッダーが使われます:

GET / HTTP/1.1
Host: example.com
X-Forwarded-For: 203.0.113.45
X-Real-IP: 203.0.113.45
# nginx でヘッダー設定
location / {
    proxy_pass http://backend;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
}

ポイント: X-Forwarded-For は簡単に偽装できるため、信頼できるプロキシからのヘッダーのみを参照するよう注意してください。多段プロキシの場合は最初のプロキシが付与した値を使います。

まとめ

プロキシにはフォワードプロキシ(クライアント側の代理)とリバースプロキシ(サーバー側の代理)があり、それぞれ用途が異なります。

特徴フォワードプロキシリバースプロキシ
代理する側クライアントサーバー
主な用途匿名化、アクセス制御負荷分散、SSL 終端、CDN
典型例Squid、企業プロキシnginx、Cloudflare、HAProxy

どちらも「中継」という意味では同じですが、誰が設定し、何を隠すかが根本的に異なります。現代の Web インフラでは、リバースプロキシが広く使われています。

参考リソース

この技術を体系的に学びたいですか?

未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。

メールで無料相談する
← 一覧に戻る