Squid/ニコニコ動画のキャッシュ共有 NicoProxy2 と Squid を連携させる
提供:maruko2 Note.
目次 |
NicoProxy2 は Web キャッシュサーバとして動作し、ニコニコ動画で再生した動画をファイルとしてキャッシュ(保存)することができる。
通常の Web キャッシュサーバとしても NicoProxy2 は動作するが、ニコニコ動画の動画をキャッシュするという機能以外では Squid を使用するほうが何かと都合がよい。
つまり、Web キャッシュサーバとして Squid を使用し、ニコニコ動画の動画をキャッシュする機能のみ NicoProxy2 を使うよう Squid と NicoProxy2 を連携させる方法。
NicoProxy2 をニコニコ動画の動画ファイルをキャッシュさせるためだけに使う。
Squid と NicoProxy2 を連携させる
Squid と NicoProxy2 は同じサーバ内で動作させてもよいし、別々のサーバで動作させてもよい。
NicoProxy2 は連携させるための特別な設定をする必要はない。
Squid で次のような設定をすることで、NicoProxy2 と連携して動作するようになる。
- acl のパターンマッチでニコニコ動画の動画へのアクセスのみ ACL名を定義する。
- cache_peer で、親キャッシュサーバとして NicoProxy2 を指定する。
- cache_peer_access で、パターンマッチしたアクセスについては NicoProxy2 を経由させる。
設定例
Squid と NicoProxy2 を同じサーバで動かす例。
NicoProxy2 の設定 (conf.yml)
NicoProxy2 をポート2525 で動作させる。
- conf.yml
port: 2525 cache: ./cache
Squid の設定 (squid.conf)
ニコニコ動画の動画へのアクセスのみ NicoProxy2 を経由する設定。
- squid.conf
acl NicovideoURL url_regex -i ^http://www\.nicovideo\.jp/api/getflv/? acl NicovideoURL url_regex -i ^http://.*\.nicovideo\.jp/smile\? cache_peer localhost parent 2525 0 proxy-only no-query cache_peer_access localhost allow NicovideoURL always_direct deny NicovideoURL
- 1-2行目
- ニコニコ動画の動画へのアクセスを url_regex でパターンマッチし NicovideoURL という ACL名で定義する。
- 3行目
- 親キャッシュサーバとして localhost のポート 2525 を指定する。
- ICP でやり取りしない隣接キャッシュサーバは親キャッシュサーバ(parent)と設定する。
- proxy-only はキャッシュするデータを隣接キャッシュサーバ内に持たせるようにする設定。
- no-query は ICP 問い合わせを行わないようにする設定。
- 4行目
- NicovideoURL へのアクセスは localhost のキャッシュサーバを経由させる。
- 5行目
- この行は無くても動作する。
- always_direct deny NicovideoURL と記述すると、『NicovideoURL へのアクセスは(キャッシュサーバを経由しないで)直接接続しなくてもよい』となり、キャッシュサーバ(この場合 NicoProxy2)が停止してしまった場合に直接接続するようになる。
- never_direct allow NicovideoURL と記述すると、『NicovideoURL へのアクセスはキャッシュサーバを経由しない接続を許可しない』となり、キャッシュサーバ(この場合 NicoProxy2)が停止してしまうと、ニコニコ動画が全く見れなくなる。
参考ページ
- NicoProxy2 作者のページ
- http://d.hatena.ne.jp/hayori/20080609/1213005114
- NicoProxy2 と Squid を MacOSX 上で 組み合わせる
- http://moimoitei.blogspot.com/2008/08/nicoproxy2-squid-macosx.html
- [Think IT] 第4回:性能比較!WEBrick vs. Apache (2/3)
- http://www.thinkit.co.jp/article/117/4/2.html