Ubuntu Weekly Recipe

第20回 いろいろなキャッシュ:dnsmasq, cache proxy

この記事を読むのに必要な時間:およそ 3 分

Apache2を利用したcache proxy

DNSキャッシュサーバに続けて,Webブラウザのキャッシュを貯め込むHTTPプロクシサーバを構築してみましょう。こちらも先ほどと同じく,ローカルマシン専用に構築します。

HTTPプロクシサーバには様々な実装が存在しますが,今回はあえてApacheを利用したプロクシサーバを構築してみましょう。

なお,充分に高速な回線を利用している場合,プロクシサーバを経由させてもアクセス速度は高速化されません。低速な回線(AIREDGEなど)で利用する場合には大きな効果があるでしょう。

プロクシサーバとしてのApacheのインストール

Apache2.xにはmod_proxyとmod_cacheという二つのモジュールが同梱されており,これらを利用することでプロクシサーバとしても動作させることができます。

以下のようにインストールしてください。

$ sudo apt-get install apache2
$ for i in proxy proxy_http proxy_ftp proxy_connect cache disk_cache mem_cache; do sudo a2enmod $i  ; done 
$ sudo /etc/init.d/apache2 force-reload

このままでは意味もなく外部から接続できてしまいますので,ports.confを変更し,localhostからのみ接続できるように修正します。/etc/apache2/ports.confの⁠Listen⁠行を,以下のように修正(:80や:443の前に127.0.0.1を追加)してください。

Listen 127.0.0.1:80

<IfModule mod_ssl.c>
    Listen 127.0.0.1:443
</IfModule>

この状態でApacheをリスタートします。

$ sudo /etc/init.d/apache2 restart

Apacheが正しくローカルホストからのみの接続をListenしているかをチェックしましょう。以下のコマンドを利用します。以下のように,localhost:www がListenされていれば問題ありません(ports.confの修正前であれば,*:wwwでListenしていたはずです⁠⁠。

$ sudo lsof -i | grep apache
apache2   11835     root    3u  IPv4  68519       TCP localhost:www (LISTEN)
apache2   11840 www-data    3u  IPv4  68519       TCP localhost:www (LISTEN)
apache2   11858 www-data    3u  IPv4  68519       TCP localhost:www (LISTEN)

ここまでの設定が終了したら,プロクシサーバとしての機能を有効にします。/etc/apache2/mods-available/proxy.confを以下のように修正してください。

--- proxy.conf.orig
+++ proxy.conf
@@ -2,19 +2,18 @@
         #turning ProxyRequests on and allowing proxying from all may allow
         #spammers to use your proxy to send email.

-        ProxyRequests Off
+        ProxyRequests On

         <Proxy *>
                 AddDefaultCharset off
                 Order deny,allow
                 Deny from all
-                #Allow from .example.com
+                Allow from 127.0.0.1
         </Proxy>

         # Enable/disable the handling of HTTP/1.1 "Via:" headers.
         # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
         # Set to one of: Off | On | Full | Block

-        ProxyVia On
+        ProxyVia Off
 </IfModule>

修正したら,再度apacheをリロードします。

$ sudo /etc/init.d/apache2 force-reload

これでプロクシサーバの準備ができました。Firefoxの設定を変更しましょう。⁠編集⁠⁠→⁠設定]でオプションダイアログを開き,⁠詳細⁠⁠ネットワーク⁠タブにある,⁠接続設定]ボタンを押し,⁠手動でプロキシを設定する⁠から設定を行ってください。

キャッシュの制限

Apache2のディスクキャッシュは,放っておくとHDDを使い切るまでキャッシュを貯め込もうとします。そこで,htcachecleanという削除のためのコマンド兼デーモンが用意されています。

上記の設定を行った時点で(正確には,e2enmod disk_cacheの時点で)Apacheが起動すると自動的に/usr/sbin/htcachecleanがデーモンモードで動作するようになっています。

デフォルトではキャッシュが300MB以下になるように動作します。このキャッシュの増減は,/etc/default/apache2にあるHTCACHECLEAN_SIZEパラメータで行うことができます。

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。