SSIをESIへ変換
タグを書き換えれば終了だけど、そう出来ない事情があって
htmlはそのままでシステム側で対応を行う場合
構成は
varnish -> nginx(もしくはapache)
普通はnginxでSSIを有効にするところを、
SSIをoffにして、その代わりにSSIタグをESIタグへの書き換えを行う
nginxで標準モジュールのsub_filterでは、単純な文字列置換はできるけど正規表現が使えない
そこで、
https://github.com/yaoweibin/ngx_http_substitutions_filter_module
サードパーティの正規表現が使えるモジュールを追加
コンパイルが必要なのでyumで入れれた場合は、ソースで再インストールする必要があり
nginxの設定に
subs_filter '<!--#include virtual="([^"]+)" -->' '<esi:include src="$1" />' gir;
これでnginxが返すhtmlはSSIタグがESIタグになる
あとは、varnish側でESIを有効にして完了
SSIでインクルードされてるファイルへのアクセスが多い場合は
varnishがパーツ単位でキャッシュしてくれるので
状況によってはかなり良くなる場合があるもしれない
あとは、更新頻度が少ないパーツはキャッシュを長くしたりなど、個別で調整も可能に