Hello! On Thu, Apr 23, 2020 at 03:36:59PM +0300, Slawa Olhovchenkov wrote:
> On Thu, Apr 23, 2020 at 03:17:38PM +0300, Maxim Dounin wrote: > > > Hello! > > > > On Thu, Apr 23, 2020 at 12:23:16PM +0300, Slawa Olhovchenkov wrote: > > > > > On Thu, Apr 23, 2020 at 01:09:52AM +0300, Maxim Dounin wrote: > > > > > > > Hello! > > > > > > > > On Wed, Apr 22, 2020 at 07:35:55PM +0300, Slawa Olhovchenkov wrote: > > > > > > > > > А что происходит если у нас есть proxy_store а исходный запрос -- с > > > > > ranges? > > > > > Скачиваем и сохраняем все, отдаем кусок? > > > > > Скачиваем и сохраняем кусок а потом глючим? > > > > > > > > Директива proxy_store не предполагает собственной логики кроме > > > > собственно сохранения ответов. При это сохраняются только ответы > > > > с кодом 200. Соответственно если бекенд возвращает 206 (Partial > > > > content), то ответ сохранён не будет. > > > > > > > > Если нужно, чтобы ответ всегда сохранялся - заголовок Range можно > > > > убрать из запроса на бекенд с помощью директивы proxy_set_header. > > > > Если при этом хочется ещё и вернуть клиенту ответ с учётом > > > > запрошенных диапазонов, то в простых случаях это можно сделать, > > > > включив директиву proxy_force_ranges. > > > > > > а когда клиент -- это на самом деле модуль который сделал сабреквест > > > -- это относится к простым случаям? > > > > В подзапросах range'ей в общем случае не бывает вообще. > > У меня -- есть. > ок, может это формально не позапрос. > Хотя по дебаг логу -- подзапрос (выборочное цититрование, да). Тут какое дело. То, что в рамках подзапроса можно отправить на бекенд range-запрос, добавив соответствующий заголовк Range - не значит, что в подзапросах есть range'и. Это значит лишь то, что ответ на подзапрос доступен как есть, ровно то, что вернул бекенд. Что с этим делать - решает тот, кто соответствующие подзапросы создавал и обрабатывает. Скажем, в частном случае модуля split - подзапросами запрашиваются куски файла с бекенда, и потом результат склеивается для ответа на запрос клиента, в том числе с учётом запрошенного клиентом диапазона. Но разбираться с тем, что именно вернулось на конкретные подзапросы - это задача модуля split, который эти подзапросы делал, а не nginx'а. Сам nginx занимается обработкой range-запросов только в рамках ответа на запросы клиентов. Соответственно возвращаясь к исходному вопросу: если заголовка Range в подзапросе на бекенд не будет, то ответ бекенда ожидаемо будет полный. Что с этим будет делать конкретный сторонний модуль - вопрос к конкретному стороннему модулю. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru