Re: nginx proxy cache битые файлы

Maxim Dounin mdounin на mdounin.ru
Ср Янв 5 12:35:53 UTC 2022


Hello!

On Tue, Jan 04, 2022 at 05:49:34AM -0500, Vladislavik wrote:

> Добрый день, nginx проксирует запросы к удаленному бэкэнду. Удаленный nginx
> бэкэнд сжимает динамические ответы brotli и отдает через HTTP1.1
> chunked_transfer_encoding. 
> 
> Иногда в кэше появляются не полные части файлов. Вопрос: nginx при
> наступлении proxy_cache_min_uses должен сохранить ответ, НО если ответ был
> не полным то nginx его все равно сохранит или перезапросит или отложит
> сохранение до следующего запроса? 
> 
> При разборе кэш файла из proxy_cache директории видно, что он был сжат и
> отправлялся по chunked_transfer_encoding без указания Content-Lenght. Nginx
> же по идее должен перед сохранением в кэш удостовериться, что файл получен
> полностью, с случае если Content-Lenght указан смотреть на полученный
> размер, если не указан, то ожидать чанка с содержимым "0<CRLF><CRLF>"

Неполные ответы nginx не сохраняет.  Однако есть нюанс: по 
умолчанию при работе с бэкендами nginx использует HTTP/1.0 
(http://nginx.org/r/proxy_http_version), а значит 
"Transfer-Encoding: chunked" использоваться не будет, и 
соответственно для ответов без длины может быть невозможно 
установить, полный он или не полный.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru