proxy_cache & gzip

Maxim Dounin mdounin на mdounin.ru
Пн Авг 17 17:29:29 UTC 2015


Hello!

On Mon, Aug 17, 2015 at 08:11:11PM +0300, Eugene Toropov wrote:

> Добрый вечер,
> 
> У меня странная (на мой взгляд) ситуация - есть proxy_cache_path, через
> который ходят POST запросы с заголовком “Accept-Encoding: gzip”. В коде
> клиента в ответе от nginx-а я вижу gzip-нутый body и “Content-Encoding:
> gzip”, но tcpflow показывает, что между nginx-ом и апстримом никакого
> gzip-а нет. Более того, я нашел закэшированный в папке proxy_cache_path-а
> файл и убедился, что контент там не gzip-нутый (хотя ключ кэша -
> "$host$request_uri $http_accept_encoding” - и в моем примере я точно вижу
> “gzip” на месте $http_accept_encoding). Подскажите, пожалуйста, как
> заставить nginx работать с апстримом по gzip-у?

Вопрос "отдавать gzip или нет" решает тот, кто отдаёт.  
Соответственно вам надо смотреть настройки бекенда, а не nginx'а.

В частности, если в роли бекенда опять же nginx - то он по 
умолчанию не жмёт ответы по HTTP/1.0, см. тут:
 
http://nginx.org/r/gzip_http_version/ru

Отдельно отмечу, что $http_accept_encoding в ключе - чревато 
большим количеством дублей одних и тех же ответов.  Если хочется 
хранить в кеше сжатое, то эффективнее будет сделать

    proxy_set_header Accept-Encoding gzip;

и включить gunzip, см. http://nginx.org/r/gunzip/ru.

-- 
Maxim Dounin
http://nginx.org/



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