Re: сжатие между двумя nginx в цепочке
Maxim Dounin
mdounin at mdounin.ru
Thu May 21 13:39:11 UTC 2015
Hello!
On Thu, May 21, 2015 at 10:04:40AM +0300, Phil Kulin wrote:
> Есть такая схема:
> nginx frontend 1 (F1) <-> nginx frontend 2 (F1) <-> apache backend 1 (B1)
В этой схеме оба фронтенда обозначены как F1, что затрудняет
понимание. Далее комментарии в предположении, что "nginx frontend 2"
на самом деле F2.
> (B1) не хочет ничего сжимать, потому что я ему так сказал. И модуль выключил.
> (F2) nginx/1.6.1
> сжимает:
> gzip on;
> gzip_comp_level 9;
Не надо делать так, level 9 - это очень медленно и при этом
бессмысленно.
> gzip_proxied any;
> gzip_http_version 1.0;
> gzip_types text/plain text/css application/xml application/xhtml+xml
> image/svg+xml application/x-font-woff application/javascript;
> (F1) nginx/1.0.11
> gzip off;
Имеет смысл обновиться.
> Я хочу, чтобы между F1 и F2 трафик по возможности жался (тащу огромные
> новомодные CSS/JS/HTML килотоннами из-за рубежа). Но если я на (F1)
> включаю gzip, то внезапно контент начинает выдаваться с задержкой...
Если я правильно расшифровал схему выше, то F1 - это внешний
фронтенд, и соответственно на сжатие между F1 и F2 настройки
gzip-фильтра на нём не влияют, т.к. жмёт F2.
> Вопрос:
> 1. Есть подводные камни? Я что-то не так делаю? Что посмотреть?
См. выше про gzip_comp_level 9.
Если часть из ресурсов - статика, то лучше их сжать заранее и
загнать под gzip_static:
http://nginx.org/ru/docs/http/ngx_http_gzip_static_module.html
Следует иметь в виду, что сжатие приводит к потере заголовка
Content-Length (если он был), и соответственно использованию
"Transfer-Encoding: chunked" (в HTTP/1.1) или закрытию соединения
(в HTTP/1.0).
> 2. А можно заставлять между сжиматься принудительно?
Включить gzip на F2, gunzip + "proxy_set_header Accept-Encoding
gzip;" на F1.
http://nginx.org/ru/docs/http/ngx_http_gunzip_module.html
Потребуется обновить F1 на что-нибудь менее коллекционное.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru