CentOS でリバースプロキシを構築

リバースプロキシとは

クライアントと Web サーバーの間に入って Web 通信の応答を代理で応答する機能で、主に次の目的で使用されます。

セキュリティ

DMZ にリバースプロキシを配置すれば、重要なデータを扱っている Web サーバー/アプリは直接インターネットに接続する必要がありません。
また、リバースプロキシ上で SSL や WAF(Web アプリケーションファイアウォール)などのセキュリティ対策をすれば、Web サーバ/アプリに直接手を加えることなく安全性を高められます。

負荷分散

同じ処理をする Web サーバー/アプリが複数ある環境では、リバースプロキシによってリクエストを分散させることができます。クライアントからは単一サーバー構成と変わらず、大量のアクセスをさばけるシステムを構築できます。

リバースプロキシ構築手順

検証環境

リバースプロキシ設定(CentOS 6.3)

squid インストール
yum -y install squid
squid.conf 設定編集
vi /etc/squid/squid.conf
squid.conf 編集内容
http_access allow all
# http_access deny all 
http_port 80 defaultsite=10.1.23.253 # 転送先 Web サーバーの IP アドレスを指定
cache_peer 10.1.23.253 parent 80 0 no-query originserver # 転送先 Web サーバーの IP アドレスを指定
cache_mem 256 MB # メモリキャッシュサイズ
visible_hostname prox.srv.world # ホスト名定義
squid 再起動
/etc/rc.d/init.d/squid restart

上記は squid を使った例ですが、Apache の場合は次のとおりです。

httpd.conf 設定編集
vi /etc/httpd/conf/httpd.conf
httpd.conf 編集内容
# LoadModule proxy_module modules/mod_proxy.so
# LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off
ProxyPass /WebGoat http://10.1.23.253 # 転送先 Web サーバーの IP アドレスを指定
ProxyPassReverse /WebGoat http://10.1.23.253/WebGoat # 転送先 Web サーバーの IP アドレスを指定
httpd 再起動
/etc/rc.d/init.d/httpd restart

参考:Web サーバー設定(CentOS 8.1)

Web サーバー関連設定
systemctl start httpd
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --reload
firewall-cmd --list-all | grep http
services: cockpit dhcpv6-client http ssh

クライアントからの接続テスト

クライアントからリバースプロキシに HTTP(S) アクセスすると、リバースプロキシが Web サーバーの代理で応答を行い、Web ページが参照できます。

関連記事

エラー内容 クライアントからリバースプロキシサーバー(CentOS 6.3 / Apache 2.2.15)経由で Web サーバーに接続した際に 503 エラーとなる事象にあいました。 503 Service Temporari[…]

以上