サマリ
リバースプロキシとなるサーバを準備し、Apacheをインストールした上で下記の設定をする。
# vi /etc/httpd/conf/httpd.conf
■Apache2.2.15の場合 ※Apache2.4.37でも同様の設定可
<IfModule mod_proxy.c>の後ろに以下を追記
ProxyRequests Off
ProxyPass / http://<Webサーバ>/ retry=10
ProxyPassReverse / http://<Web-Server>/
リバースプロキシとは…
プロキシは、クライアントーサーバ間の通信に入り、代理応答するもの。
解決したい課題に応じてフォワードとリバースを使い分けて実装する。
例えば、不特定多数のユーザが利用するシステムの場合、
リバースプロキシを採用する必要が賢明である。
■フォワードプロキシ(一般的に言われるプロキシ):
クライアント側のネットワーク、または、第三者のネットワークなど、
サーバ側のネットワーク以外に存在する。
プロキシを利用するために、クライアント端末側で設定が必要。
■リバースプロキシ:
サーバ側のネットワーク内に存在する。
プロキシを利用するために、クライアント端末側で設定は不要。
リバースプロキシの用途
リバースプロキシを使う用途として、主に下記のようなものがある。
・負荷分散:
リバースプロキシ上で負荷分散機能を有効にすることにより、
複数のサーバに通信を振り分けることで負荷分散ができる。
・キャッシュを使った高速化:
リバースプロキシ上でキャッシュ機能を有効にすることにより、
静的なデータをリバプロ上でキャッシュし、代理応答させることで
クライアントに対する応答の高速化とサーバに対する負荷軽減ができる。
・異種のアプリ統合:
複数のアプリ、サーバ構成されるサービスを単一サイトに見せかけることで、
利用者が利用するサービスに合わせて接続先を変更する必要がなくなる。
・セキュリティ強化:
リバースプロキシをDMZなどの公開エリアに配置させることで、
サーバを直接、インターネットやクライアントに晒す必要がなくなり、
セキュリティリスクを低減できる。
・SSL通信の集中管理:
サーバが配備されているネットワークは傍受、改ざんがなく安全と考え、
クライアントーリバースプロキシ間の通信をSSLで暗号化する場合、
リバースプロキシ上でSSL通信用のサーバ証明書を一括管理し、
暗号化処理させることでサーバ毎に証明書の管理、暗号化処理が不要となる。
・通信経路の集約
クライアント~サーバ間で静的にNAT変換を行っている場合、
NAT変換テーブルの上限以上の端末が登録できず、
端末の増減があれば随時テーブルを更新する必要がある。
プロキシで接続することでクライアントがサーバと直接通信しないため、
通信経路、設定を集約できる。
設定方法
上記の構成のリバースプロキシサーバに対する設定を記載する。
0.OSをインストールし、Apacheをインストールする。(以下Linux想定)
1.下記のファイルを編集する。
# vi /etc/httpd/conf/httpd.conf
■Apache2.2.15の場合 ※Apache2.4.37でも同様の設定可
<IfModule mod_proxy.c>の後ろに以下を追記
ProxyRequests Off
ProxyPass / http://<Web-Server>/ retry=10
ProxyPassReverse / http://<Web-Server>/
2.サービスを再起動する。
■CentOS6、RHEL6などの場合
# service httpd restart
■CentOS7~、RHEL7~などの場合
# systemctl restart httpd
3.動作確認としてクライアント端末から、リバプロサーバにアクセスする。
クライアント端末のブラウザで、下記の通りアクセスする。
http://<Reverse-Proxy>/
リバースプロキシに対して接続要求しているにも関わらず、
Web-Serverのコンテンツが表示されれば、成功。
補足)設定値の意図
・リバースプロキシの「retry」オプション デフォ:60秒 → 10秒
転送先のWebサーバが停止、通信不可になるとリバースプロキシとの接続が切断されるが、
転送先のWebサーバとの通信が復旧した場合、リバースプロキシが自動的に再接続を試みる。
再接続を試みる間隔は、デフォルト60秒のため、通信が復旧していても最大60秒間待たされる。
よりタイムリーに接続再開できるように、リトライ間隔を短くする。
ただし、極端に短い時間に設定した場合、復旧に対する反応は良くなる一方で、
接続できない間もリトライを繰り返すため、webサーバに再接続できない間、
プロキシサーバの負荷が一時的に高くなるため、
システムの特性、要件に合わせて調整が必要となる。
※その他のオプション設定はデフォルト値を利用
注意事項
・ファイアウォールのポート開放が必要である。
リバースプロキシがクライアントの通信を受ける必要があるため、
リバースプロキシのFW、及び途中経路のポート開放が必要となる。
・リバースプロキシで名前解決が必要である。
リバプロのhttpd.confにサーバ名称で登録する場合、
リバプロがサーバ接続できる必要ガアあるため、
hostsファイルやDNS等を使って名前解決できなければならない。
参考
・Apache モジュール mod_proxy
・リバースプロキシ(Reverse Proxy)
・リバースプロキシとは?プロキシとの違いや仕組み、利用するメリットを解説
コメント