Лак предотвратить доступ ESI из внешнего источника

У меня есть Varnish и работает, и все работает просто отлично.

Но я использую ESI <esi:include src="/esi/cache/temp.phtml?id=1"/> и это хорошо работает, но я хочу, чтобы внешние ресурсы не могли получить доступ к каталогу esi.

Теперь у меня это работает, установив заголовок в лаке с req.esi_level, Это будет 0, если вы обращаетесь к ESI напрямую и хорошо, иначе это будет n+1

Единственная проблема, с которой это связано, заключается в том, что я думаю / надеюсь, что Varnish сам по себе может помешать доступу к каталогу esi.

tl; dr, как вы можете запретить внешний доступ к каталогу esi с помощью лака

1 ответ

Решение

В вашем VCL вместо установки заголовка со значением request.esi_level, просто короткое замыкание запрашивает эти ресурсы с esi_level, равным 0.

псевдо-VCL:

if (req.esi_level == 0 && req.url ~ "^/esi/.*") {
    error (403);
}
Другие вопросы по тегам