LoginSignup
9
8

More than 5 years have passed since last update.

HTTP/HTTPSもDNSもキャッシュする

Last updated at Posted at 2015-03-25

以下のいずれかの症状の当てはまる方向け。

  • ブラウザのキャッシュ容量でいつも悩む
  • とりあえずキャッシュすると気分も高速化する
  • 複数のブラウザを使用するが、キャッシュは統一したい
  • プロキシが好きでたまらない

試した環境

  • 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 修正。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8