Re: nginx proxy cache битые файлы
я не адвокатирую HTTP/1.0 однако, гипотетически могут возникнуть грабли такого свойства - на http/1.0 не поддерживается gzip. из-за этого ваш бекенд всегда будет игнорировать компрессию. допустим, вы включили 1.1, бекенд отдал с компрессией, вы положили ответ в кеш. пришел клиент (без компрессии), вы ему отдали сжатое из кеша. маловероятно, что такое может быть (пример надуманный), но у клиента все сломается. ср, 5 янв. 2022 г. в 18:00, Gena Makhomed : > On 05.01.2022 14:35, Maxim Dounin wrote: > > > Неполные ответы nginx не сохраняет. Однако есть нюанс: по > > умолчанию при работе с бэкендами nginx использует HTTP/1.0 > > (http://nginx.org/r/proxy_http_version), а значит > > "Transfer-Encoding: chunked" использоваться не будет, и > > соответственно для ответов без длины может быть невозможно > > установить, полный он или не полный. > > А какой смысл по умолчанию при работе > с бэкендами использовать HTTP/1.0 ? > > Ведь это же явно разложенные грабли (subj), > на которые практически все рано или поздно наступают. > > Может быть имеет смысл изменить значение по умлолчанию, > чтобы при работе с бэкендами использовался протокол HTTP/1.1 ? > > Преимуществ HTTP/1.0 не дает никаких, одни только проблемы. > И ответа на этот вопрос в документации нет, почему так сделано. > > -- > Best regards, > Gena > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx proxy cache битые файлы
по соображениям обратной совместимости, вероятно. все, для кого важно, включили 1.1 ср, 5 янв. 2022 г. в 18:00, Gena Makhomed : > On 05.01.2022 14:35, Maxim Dounin wrote: > > > Неполные ответы nginx не сохраняет. Однако есть нюанс: по > > умолчанию при работе с бэкендами nginx использует HTTP/1.0 > > (http://nginx.org/r/proxy_http_version), а значит > > "Transfer-Encoding: chunked" использоваться не будет, и > > соответственно для ответов без длины может быть невозможно > > установить, полный он или не полный. > > А какой смысл по умолчанию при работе > с бэкендами использовать HTTP/1.0 ? > > Ведь это же явно разложенные грабли (subj), > на которые практически все рано или поздно наступают. > > Может быть имеет смысл изменить значение по умлолчанию, > чтобы при работе с бэкендами использовался протокол HTTP/1.1 ? > > Преимуществ HTTP/1.0 не дает никаких, одни только проблемы. > И ответа на этот вопрос в документации нет, почему так сделано. > > -- > Best regards, > Gena > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx proxy cache битые файлы
On 05.01.2022 14:35, Maxim Dounin wrote: Неполные ответы nginx не сохраняет. Однако есть нюанс: по умолчанию при работе с бэкендами nginx использует HTTP/1.0 (http://nginx.org/r/proxy_http_version), а значит "Transfer-Encoding: chunked" использоваться не будет, и соответственно для ответов без длины может быть невозможно установить, полный он или не полный. А какой смысл по умолчанию при работе с бэкендами использовать HTTP/1.0 ? Ведь это же явно разложенные грабли (subj), на которые практически все рано или поздно наступают. Может быть имеет смысл изменить значение по умлолчанию, чтобы при работе с бэкендами использовался протокол HTTP/1.1 ? Преимуществ HTTP/1.0 не дает никаких, одни только проблемы. И ответа на этот вопрос в документации нет, почему так сделано. -- Best regards, Gena ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
Re: nginx proxy cache битые файлы
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" Неполные ответы nginx не сохраняет. Однако есть нюанс: по умолчанию при работе с бэкендами nginx использует HTTP/1.0 (http://nginx.org/r/proxy_http_version), а значит "Transfer-Encoding: chunked" использоваться не будет, и соответственно для ответов без длины может быть невозможно установить, полный он или не полный. -- Maxim Dounin http://mdounin.ru/ ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
nginx proxy cache битые файлы
Добрый день, 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" Posted at Nginx Forum: https://forum.nginx.org/read.php?21,293246,293246#msg-293246 ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru