apacheでリバースプロキシ

リバースプロキシ構成図

リバースプロキシ構成図


Visioファイル → https://www.isoppe.jp/upload/log/008.zip

「リバースプロキシ」は、httpリクエストを特定サーバが受けて、そのリクエストをローカルネットワーク内にある
Webサーバへ中継するものです。期待できる効果としては

・ローカルネットワーク内のWebサーバには直接インターネットと通信しないのでセキュリティが向上する
・ディレクトリ単位で単体もしくは複数のサーバを指定できるので負荷分散できる
・アクセスが集中する(負荷が高い)コンテンツの追加が容易になる
・キャッシングすることにより負荷が軽減できる

以下が設定になります。

1.外部Webサーバ(http://example.com)
リバースプロキシするのに必要なモジュールを読み込むように設定します。

#vi /etc/httpd/conf/httpd.conf
#LoadModule proxy_module modules/mod_proxy.so          #変更前
#LoadModule proxy_http_module modules/mod_proxy_http.so  #変更前

LoadModule proxy_module modules/mod_proxy.so          #変更後
LoadModule proxy_http_module modules/mod_proxy_http.so  #変更後

2.外部Webサーバ(http://example.com)
どのディレクトリへのリクエストは、どのサーバへ中継するかを指定し、アクセス許可/拒否の設定をします。

#vi /etc/httpd/conf/httpd.conf

ProxyRequests off   #フォワードプロキシを有効にする場合はon。今回はoff

<Proxy *>     #リバースプロキシするディレクトリのアクセス許可/拒否を設定します
Order deny,allow
Allow from all
</Proxy>

#どのディレクトリへのリクエストは、どのサーバへ中継するかを指定します
ProxyPass         /hoge1 http://hoge1.example.com
ProxyPassReverse   /hoge1 http://hoge1.example.com
ProxyPass         /hoge2 http://hoge2.example.com
ProxyPassReverse   /hoge2 http://hoge2.example.com

3.内部Webサーバ1,2(http://hoge1.example.com,http://hoge2.example.com)
外部向けのWebサーバからのアクセスを許可します。

#vi /etc/httpd/conf/httpd.conf

<Directory />
Order deny,allow
Allow from 192.168.254.0/24
</Directory>

============================
・proxy_module
 フォワードプロキシ、リバースプロキシ機能を有効にするためのモジュール
・proxy_balancer_module
 ロードバランシング機能を有効にするためのモジュール
・proxy_ftp_module
 FTPサービスでプロキシ機能を有効にするためのモジュール
・proxy_http_module
 HTTPサービスでプロキシ機能を有効にするためのモジュール
・proxy_connect_module
 主にHTTPS(SSL)サービスでプロキシ機能を有効にするためのモジュール
・proxy_ajp_module(/etc/httpd/conf.d/proxy_ajp.conf)
 JAVAがapacheとAJPプロトコル通信するためのモジュール

普段、「プロキシ」「串」と言われているものは、正確には「フォワードプロキシ」です。
ナロー回線でサーバの性能が貧弱な時代、多数のユーザが同じwebコンテンツにリクエストするのは
サーバ側の回線帯域を圧迫するわ、サーバの処理が追いつかなくなるわなのでキャッシングして高速化しちゃおう、てものです。
動的コンテンツが多い昨今、串サーバはWebキャッシュとしての効果は期待薄のような気がします。
とはいえ、企業はWebフィルタリング & 閲覧ロギングとして導入することが殆どだから構わないってか。

検証環境
OS:Cent OS5.6
apache:2.2.3-45.el5