うまいぼうぶろぐ

linuxとhttpdとperlのメモ

big-ip Web Accelerationでcache

httpコンテンツcacheする場合、だいたいvarnishとかnginx、apacheでやるし、
最近だとCDNもあったりするので、機能としてあるのは知ってたけど使わなかった機能。

とはいえ突発的なアクセスがきて、急に構成変更ができない場合にさくっとできるように調べて見た。

とりあえずまとめ

  • 要http profile
  • cacheはwebacceleration profile毎に個別
  • hostヘッダによっても異なる

f5 document

Local Traffic - Virtual Servers - Profiles - Services - Web Acceleration

defaultのprofileはいぢりだくないので、webaccelerationをparent profile として新規にprofile 作成

webacceleration-test

テスト

2 vip (4 virtualserver)に同一のprofileを適用してテスト

アクセスするとランダムな値を返すアプリを用意

1. 192.168.0.11:80
2. 192.168.0.11:443
3. 192.168.0.12:80
4. 192.168.0.12:443

1と2で同じキャッシュ、3と4で同じキャッシュが返ってきた。

virtualhost

hostsに

192.168.0.11 a.example.com b.example.com

とかいて

にアクセスすると異なるキャッシュが返ってきた。

さらにこのキャッシュが残っている状態で

192.168.0.12 a.example.com b.example.com

に書き換えて192.168.0.12のサーバにアクセスすると

にアクセスすると、↑と同じキャッシュが返ってきた。
(もしくは curl 192.168.0.12 -H 'host: a.example.com')

というわけで、同一webacceleration profileで
hostヘッダをkeyとしてキャッシュを使い分けてるみたい。
まあ、普通にインターネット上に公開している場合、異なるサーバ間で
hostヘッダが同じになることはないので気にしなくてよいかもしれないけど
hostヘッダ偽装により想定外のコンテンツが返る可能性があるので、
virtualserverごとにprofileはわけたほうが無難