поддерживает ли nginx сжатие запроса в восходящий поток?

доза nginx supprt это ? Whoul вы, пожалуйста, покажите мне некоторые конфигурации его?

[Client]           [Nginx Reverse Proxy]               [BackEnd]
   |   [Raw Post]         |    [gzip encoded request]     |   
   |--------------------> | ----------------------------->|
   |                      |                               |  
   |   [Raw Response]     |    [gzip encoded response]    |
   | <------------------  | <-----------------------------|
   |                      |                               |

3 ответов


видимо, есть какой-то способ сделать это. Nginx имеет gunzip модуль, который gzip распаковывает ответы:

модуль ngx_http_gunzip_module-это фильтр, который распаковывает ответы с "Content-Encoding: gzip" для клиентов, которые не поддержка метода кодирования "gzip". Модуль будет полезен, когда он есть желательно хранить сжатые данные, экономить место и уменьшать ввод-вывод затраты.

этот модуль не встроен по умолчанию, он должен быть включен с --с параметром конфигурации-http_gunzip_module.

источник:http://nginx.org/en/docs/http/ngx_http_gunzip_module.html

затем вы можете использовать его как:

gunzip on;

надеюсь, что это сработает для вас.

Также см. Этот вопрос SO: есть ли какие-то модули распаковки в nginx?


полный и правильный ответ заключается в том, что nginx can сделать это, но с парой оговорок. Чтобы предоставить несжатый ответ пограничному клиенту (ПК пользователя), необходимо скомпилировать nginx с помощью gunzip module-который не построен / включен по умолчанию. Это противоположность модулю gzip и позволяет nginx распаковывать уже сжатые ресурсы, найденные на диске или полученные с бэкэнд-сервера.

поэтому при компиляции nginx включите этот: --with-http_gunzip_module

и в nginx.conf, у вас будет такой блок для описания запросов, которые будут получены с бэкэнд-сервера:

    location @backend {
        ...
        proxy_pass http://10.0.0.xxx;
        gunzip on;
        proxy_set_header Accept-Encoding "gzip";
    }

вы можете отключить сжатие gzip в nginx, установив gzip директива off в своем nginx.conf:

gzip off

кроме того, вы можете включить сжатие gzip только для проксированных запросов:

gzip_proxied off

Nginx имеет отличную Вики, где вся эта информация четко объясняется: http://wiki.nginx.org/HttpGzipModule

о проксировании nginx: также четко описано в nginx wiki:

пример:

location / {
  proxy_pass        http://localhost:8000;
  proxy_set_header  X-Real-IP  $remote_addr;
}

http://wiki.nginx.org/HttpProxyModule

существует много разных способов настроить прокси-сервер, поэтому вы должны погрузиться и посмотреть, что вам нужно, на это нет "одного" ответа.