今日はさらっと更新してみる。
いままで polipo とか squid とか ziproxy とかいろんなプロキシを使ってきましたが、もっと単純に、単なるキャッシュを溜めていく場合に有用な方法として Apache のキャッシュ機能を有効にしてこれに接続する方法があります。
環境は OS X 10.9.1 です。これに標準でついてくる Apache を利用してキャッシュ用のプロキシを作ります。
Apache のバージョンはこんな感じ。
% httpd -v
Server version: Apache/2.2.24 (Unix)
Server built: Aug 24 2013 21:10:43
Apache は下記のコマンドで、起動・再起動・停止ができます。
sudo apachectl start
sudo apachectl restart
sudo apachectl stop
まず、キャッシュを保存するフォルダを作ります。どこでもいいで適当に作ります。
sudo mkdir /opt/cache
sudo chmod -R 777 /opt/cache
次に、プロクシを有効にするためのコンフィグファイルを作成します。
sudo touch /etc/apache2/other/proxy.conf
sudo vi /etc/apache2/other/proxy.conf
コンフィグの内容はこんな感じ。
<IfModule mod_proxy.c> ProxyRequests On ProxyVia Off Listen 8888 <Proxy *> AddDefaultCharset off Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> </IfModule> <IfModule mod_cache.c> <IfModule mod_disk_cache.c> CacheRoot /opt/cache CacheEnable disk / CacheDirLevels 5 CacheDirLength 3 CacheIgnoreCacheControl On CacheIgnoreNoLastMod On CacheStoreNoStore On CacheStorePrivate On Header set Expires "Thu, 01 Jan 2099 00:00:00 GMT" </IfModule> <IfModule mod_mem_cache.c> CacheEnable mem / MCacheSize 4096 MCacheMaxObjectCount 100 MCacheMinObjectSize 1 MCacheMaxObjectSize 2048 </IfModule> CacheDisable http://security.update.server/update-list/ </IfModule>
ちょっとキャッシュを強めにした設定なので、リロード程度じゃ内容は書き換わりません!w
設定がかけたら、sudo apachectl restart で Apache を再起動すると設定が読み込まれます。
システム環境設定のネットワークの中にあるプロキシ設定で 127.0.0.1:8888 を設定すれば OK です。ちなみに除外設定は下記のとおりです。
*.local, 169.254/16, 127.0.0.1, *.yimg.jp, *.adobe.com, *.mozilla.com, *.asahicom.jp, *.amazonaws.com, *.hatena.ne.jp, *.hateblo.jp
キャッシュフォルダにキャッシュが溜まっていく様子は、下記のコマンドで容量を見れます。
sudo du -sh /opt/cache
MacBook Air上ではうまく動作しています。Mac miniにも同じ設定をして、家庭内 LAN 上で利用しようと思いましたが、iOS 端末ではそのままではうまく動作しませんでした。なんか api.twitter.com とかうまく動作せず、Twitter クライアントが接続できなくなったりしました。これは下記のような .pac を作って回避出来ました。
function FindProxyForURL(url, host) { //Access images directly if (host == "api.twitter.com") return "DIRECT"; //For everything else use stg proxy return "PROXY [192.168.0.1:8888]"; }
でも、結局 Mac mini でのキャッシュサーバは、やめました。
同時接続していると Mac mini がカーネルパニックになる現象が2回発生したので、設定を外して様子を見ています。