リバースプロキシ
サーバの側に置き、外部からの要求を受け付けて、内部のサーバに中継するプロキシサーバ。内部のサーバを直接外部に公開せずに済み、負荷分散やTLSの終端、キャッシュなども行える。
イマシルちゃんの解説
ふつうのプロキシ(フォワードプロキシ)は、社員の代わりに外のお店に行く「お使い係」だったよね。
リバースプロキシはその逆で、お店(サーバ)の入口に立つ「受付係」なんだ。
お客さん(外部の利用者)は、受付係とだけ話して、奥のバックヤード(社内のサーバ)には入れない。
受付係が代わりに奥へ取り次ぐから、大事なサーバを外から直接触らせずに済むんだよ!
より深い解説
定義
リバースプロキシは、外部のクライアントからの要求を、内部のWebサーバなどの代わりに受け付け、適切な内部のサーバに転送し、その応答をクライアントに返すサーバである。クライアントから見ると、リバースプロキシがサーバそのものに見える。通常はDMZに置く。
主な役割
| 役割 | 内容 |
|---|---|
| 内部のサーバの保護 | 内部のサーバのアドレスを外部に見せず、外部からの直接の接続を受けない。ファイアウォールでは、インターネットからはリバースプロキシへの通信だけを許可し、内部のサーバへはリバースプロキシからの通信だけを許可する |
| 負荷分散 | 複数のサーバに要求を振り分ける(ロードバランサの役割) |
| TLSの終端 | HTTPSの暗号化・復号をまとめて行い、内部のサーバの負荷を減らす。証明書の管理も一か所で済む |
| 認証 | 内部のサーバに届く前に、利用者を認証する |
| キャッシュ・圧縮 | 静的なコンテンツを返し、応答を速くする |
| WAF | 不正な要求(SQLインジェクションなど)を検査して遮断する |
使われ方の例
| 例 | 内容 |
|---|---|
| 社外からの業務サーバの利用 | テレワーク中のPCが、DMZのリバースプロキシを経由して、社内の業務サーバに接続する。リバースプロキシで利用者を認証する |
| Webサービスの公開 | 複数のアプリケーションサーバを、1つのドメイン名の後ろにまとめる |
| CDN | 世界中に置いた、リバースプロキシのような働きをするキャッシュサーバ |
フォワードプロキシとの比較
| フォワードプロキシ | リバースプロキシ | |
|---|---|---|
| 誰の代理か | クライアントの代理 | サーバの代理 |
| 通信の向き | 内部 → 外部 | 外部 → 内部 |
| 端末の設定 | 必要(PACファイルなど) | 不要(DNSでリバースプロキシのアドレスを引かせる) |
同じソフトウェア(nginx、Apache HTTP Server、Squidなど)を、設定によってどちらとしても使えることが多い。フォワードプロキシとして使っていたサーバを、設定を変えてリバースプロキシとして使い直す場合は、ファイアウォールの許可ルールも、通信の向きに合わせて見直す必要がある。