Re: Битые файлы в кеше при gzip ответах
Maxim Dounin
mdounin на mdounin.ru
Ср Авг 14 11:24:17 UTC 2019
Hello!
On Tue, Aug 13, 2019 at 09:52:16PM +0300, Владислав Толмачев wrote:
> Добрый день, не пойму как исправить ситуацию, nginx иногда хранит в proxy
> кеше битые обрезанные файлы, при использовании на бэкенде gzip, тот же баг
> замечен на клаудфлер, иногда в его кеше лешит обрезанный файл, например
> половина js файла и помогает только сброс кеша и запрос файла еще раз, что
> бы файл стал полный. Что подкрутить, что бы не выключать gzip и http1.1? В
> клаудфлере даже замечено то, что половина кэш серверов сохраняет полный
> файл, половина хранит его обрезанную версию и выдает ее как правильную....
Использование сжатия на бэкенде обычно означает, что заголовка
Content-Length в ответах бэкенда не будет. Соответственно в
HTTP/1.0 окончание ответа будет определяться по закрытию соединения, и
если бэкенд по каким-то причинам закрывает соединение, не дослав
ответ полностью, то такой ответ имеет шансы быть сохранённым в кэш
частично.
Лучше всего в подобной ситуации - разобраться, почему таки
закрываются соединения, и полечить. Но в качестве workaround'а
скорее всего сработает "proxy_http_version 1.1;" в конфиге.
Подробнее тут:
http://nginx.org/r/proxy_http_version/ru
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru