Как предотвратить повторное сжатие обратного прокси-сервера nginx сжатого ответа восходящего потока?
У меня есть обратный прокси-сервер nginx, который получает сжатый ответ brotli от восходящего потока (кеш Varnish). Но обратный прокси-сервер предоставляет браузеру сжатый ответ, только если я настроил "brotli on;" в блоке обратного прокси-сервера.
Моя цель - сделать так, чтобы обратный прокси nginx вообще не обрабатывал сжатие. Для этого у меня есть следующие вопросы:
Ожидается ли, что блок обратного прокси-сервера распакует полученный ответ и обработает его самостоятельно? Разве он не может напрямую передать ответ восходящего потока обратно клиенту?
Есть ли способ сбросить ответ прокси или его размер в журналы nginx? Это поможет лучше отладить проблему.
1 ответ
Я решил эту проблему, поэтому отправляю это всем, кто может столкнуться с подобной проблемой:
- Varnish изменил заголовок моего запроса "Accept-Encoding" на "gzip". Согласно документации Varnish, это так, как задумано (см. Здесь).
- Однако вышестоящий сервер nginx (за лаком) ответил несжатым контентом, потому что по умолчанию для
gzip_http_version
равно 1.0, а значение по умолчанию дляproxy_http_version
составляет 1,1. ( см. здесь)
Разрешение было достигнуто:
а. настройте Varnish, чтобы не беспокоиться о сжатии, передав
-p http_gzip_support=off
к
varnishd
.
б. установка
gzip_http_version
к
1.1
на вышестоящем сервере Nginx.
Расшифровка вышеуказанного поведения стала возможной, потому что я зарегистрировал следующее на своем восходящем сервере nginx (тот, который находится за лаком):
log_format bytes_sent '$bytes_sent' - '$http_accept_encoding' - '$request';