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がパーツ単位でキャッシュしてくれるので
状況によってはかなり良くなる場合があるもしれない
あとは、更新頻度が少ないパーツはキャッシュを長くしたりなど、個別で調整も可能に