Transfer-Encoding: chunked для статических файлов
Руслан Шарипов
ufaweb at gmail.com
Mon Mar 25 09:21:28 UTC 2013
Добрый день.
Подскажите, поддерживает ли nginx возможность отдавать статические
файлы чанками?
Если запросить ресурс, который nginx будет проксировать, то
Transfer-Encoding: chunked включается. Например, запрашиваем ресурс,
который формируется wsgi-бэкендом: curl
http://server.example.com/api/v1/file/foobar/status, то ответ будет
таким:
HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Mon, 25 Mar 2013 09:09:08 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close
d
{"status": 0}
0
Т.е. все хорошо, ответ пришел чанками.
Но если запросить ресурс, который представляет из себя просто
статичный файл и обрабатывается вот таким location'ом:
location /files/ {
root /home/uploader/receiver;
chunked_transfer_encoding on;
}
То имеем такую картину:
Запрос: curl http://server.example.com/files/foobar
Ответ:
HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Mon, 25 Mar 2013 09:05:02 GMT
Content-Type: application/octet-stream
Content-Length: 819098
Last-Modified: Mon, 25 Mar 2013 08:38:21 GMT
Connection: keep-alive
Accept-Ranges: bytes
...data
Т.е. nginx отдает файл "спрошняком", не деля его на чанки. Можно ли
добиться того, чтобы nginx разбивал на чанки не только ответы от
бэкендов, но и статические файлы? (здесь же возникает вопрос, как
настаивать размер чанка)
Спасибо.
p.s. возможно задачу можно решить иначе, поэтому также поясню зачем
мне это надо. Если верить некому Бену
(https://groups.google.com/forum/?fromgroups=#!topic/python-tornado/kvZma1JY1hc),
то штатный http-клиент из tornado позволяет использовать
streaming_callback
(http://www.tornadoweb.org/en/stable/httpclient.html) только в том
случае, если ответ от сервера не "сплошной", а разбит на чанки.
--
С уважением, Шарипов Руслан.
Руководитель отдела разработки и сопровождения программного
обеспечения ОАО "Уфанет".
Контактная информация:
google+: http://gplus.to/ruslan
jid: serafim at jabber.ufanet.ru
wave: ufaweb at googlewave.com
skype: ufaweb
phone: +7(917)4775460
vkontakte: http://vkontakte.ru/ufaweb
myspace: http://www.myspace.com/ufaweb
facebook: http://facebook.com/sharipov
linkedin: http://www.linkedin.com/in/ufaweb
twitter: http://twitter.com/ufaweb
Подробная информация о списке рассылки nginx-ru