オープンソースのプロキシサーバといえば、最初に名前が挙がるのはSquidでしょう。一般的にプロキシと呼んでいる機能とは、厳密には「フォワードプロキシ」(Forward Proxy)と呼びます。今回はSquidをフォワードプロキシとしてではなく、「リバースプロキシ」(Reverse Proxy)サーバとして利用し、そのキャッシュ効果で性能向上を狙います。
Webサーバの前面にSquidリバースプロキシを導入すると、クライアントからのアクセスをWebサーバに代わってSquidが処理することになります。前回、ナローバンドからのアクセスがレスポンス低下の原因になることを説明しました。このナローバンドからのアクセスはSquidが処理する一方、WebサーバとSquidの間は高速に処理されるので、Webサーバがボトルネックになるのを防ぐことができます。
リバースプロキシを前面に立て、Webサーバをリバースプロキシからしか見えないプライベートネットワークに設置することで、Webサーバを不正アクセスから保護することもできます。
異なるコンテンツを格納する複数のWebサーバの前面にリバースプロキシを設置し、リバースプロキシがURLに応じてバックエンドのサーバを選択する構成を取ることもできます。これにより、1つのサーバアドレスで、複数のコンテンツをユーザーに見せるといったWebサイトを実現できます。このロードバランサ寄りの機能は、後述する「Pound」の部分で紹介します。
使用しているディストリビューションがRPMなどのバイナリパッケージを提供している場合は、それを利用するのが効率的です。
# yum install squid
ソースからインストールする場合は、Squidの公式サイト(http://www.squid-cache.org/)からソースファイルをダウンロードして適当なディレクトリに展開します。生成されたディレクトリに移動し、configureおよびmakeを実行します。
# wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE11.tar.gz # tar xvfz squid-2.5.STABLE11.tar.gz # cd squid-2.5.STABLE11 # ./configure # make # make install
ソースからインストールした場合、インストール先は/usr/local/squid/になります。
ここまでの作業が終わったら、グループとユーザーを作成し、キャッシュ領域を初期化します。
# groupadd squid
# adduser -g squid -d /usr/local/squid/var squid
# chown squid.squid /usr/local/squid/var
# /usr/local/squid/sbin/squid -z
Squidのインストールが完了したら、squid.confファイルを編集してリバースプロキシを立ち上げます。squid.confファイルは、ソースからインストールした場合は/usr/local/squid/etc/squid.conf、Red HatやFedora Core、SUSE、Turbolinuxでは/etc/squid/squid.confに存在します。
http_port 80 (1) cache_dir ufs /usr/local/squid/var/cache 100 16 256 (2) cache_effective_user squid (2) visible_hostname www.example.jp (3) httpd_accel_host 192.168.0.10 (4) httpd_accel_port 80 (5) httpd_accel_single_host on (6) httpd_accel_with_proxy off (7) httpd_accel_uses_host_header off (8) acl all src 0.0.0.0/0.0.0.0 (9) http_access allow all (9)
前述したように、セキュリティを考慮してWebサーバをプライベートネットワークに設置し、Squidからしか接続できないようにすることもできます。また、バックエンドのWebサーバのサービスポートは80番以外でも可能となるため、ポートスキャンを受けないような番号に変更することもできます。
Squidの設定が終わったらSquidを起動し、動作を確認します。
# /etc/init.d/squid start
# /usr/local/squid/sbin/squid
WebブラウザでSquidサーバにアクセスし、表示を確認します。Apacheのアクセスログも併せて確認します。リバースプロキシを利用した場合、Apacheのアクセスログに記録されるクライアントアドレスは、リバースプロキシサーバのアドレスになります。クライアントのアクセス記録はSquid側に記録されることに注意しましょう。
Copyright © ITmedia, Inc. All Rights Reserved.