以下のいずれかの症状の当てはまる方向け。
- ブラウザのキャッシュ容量でいつも悩む
- とりあえずキャッシュすると気分も高速化する
- 複数のブラウザを使用するが、キャッシュは統一したい
- プロキシが好きでたまらない
試した環境
- OSX 10.10.2
- Xcode 6.2 + CommandLineTools
- homebrew 0.9.5
- squid 3.4.0
- nghttp2 0.7.5
- dnsmasq 2.72
HTTP/HTTPS 通信をキャッシュする
squid
インストール
$ brew install squid
で、インストール完了。
自動起動させたい場合は、インストール時に表示されるメッセージに従って ~/Library/LaunchAgent
に plist を登録してあげると毎回起動する必要が無くなり便利。
設定
プロキシの存在を極力隠したければ、 /usr/local/etc/squid.conf
に
visible_hostname unkown
forwarded_for off
request_header_access X-FORWARDED-FOR deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
を追加。
認証ありなプロキシを使ってる環境な方は、以前書いた
OSX - squid で認証ありプロキシによるストレスを軽減する
も参考にどうぞ。
nghttp2
インストール
こちらもサクッと
$ brew install nghttp2
設定
今回はバックエンドに squid を利用する HTTP/2 プロキシとして使うので、
証明書を用意できるのであれば、
$ nghttpx -s -f*,8443 -b127.0.0.1,3128 /path/to/server.key /path/to/server.crt
とすると、デフォルトで SSL/TLS を使うセキュアな HTTP/2 + SPDY プロキシとして動作する。
なお、 IPv4 のみにしたければ
$ nghttpx -s -f0.0.0.0,8443 -b127.0.0.1,3128 /path/to/server.key /path/to/server.crt
といった具合に * を 0.0.0.0 (or IPアドレス)で起動。
なお、証明書の用意が出来なければ、
$ nghttpx -s --frontend-no-tls -f*,8443 -b127.0.0.1,3128
とすると、SSL/TLS 接続が無効になってしまうものの、HTTP/2 プロキシとしては動作する。
※launchd から起動する plist 書いた方いたらください...
dnsmasq
インストール
$ brew install dnsmasq
$ cp `brew --prefix dnsmasq`/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
$ sudo cp -fv `brew --prefix dnsmasq`/dnsmasq/*.plist /Library/LaunchDaemons
$ sudo chown root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
設定
循環参照しないよう、 resolv-file だけはしっかりと設定する。
$ emacs -nw /usr/local/etc/dnsmasq.conf
resolv-file=/usr/local/etc/resolv.dnsmasq.conf
ここまでやったら、「システム環境設定」→「ネットワーク」から、DNSの設定を 127.0.0.1
に書き換え。
動作確認
DNSキャッシュをクリアして、名前解決できれば完了。
$ sudo dscacheutil -flushcache
$ sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
$ sudo launchctl load
/Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
$ dig qiita.com
...
変更履歴
2015.10.09 plist のコピーを追加。typo 修正。