Настройка обработки сжатых ответов бэкенда¶
Если бэкенд возвращает ответ, сжатый с помощью gzip, может возникнуть ошибка валидации тела ответа.
Чтобы фильтрующая нода валидировала несжатое тело, настройте NGINX так, чтобы он не передавал бэкенду заголовок Accept-Encoding. При необходимости NGINX сожмёт ответ после валидации – перед отправкой.
Шаги настройки NGINX¶
-
Откройте файл конфигурации фильтрующей ноды:
node/conf/nginx/wmx.nginx.conf -
Найдите блок
location, содержащий директивуproxy_pass, и добавьте в него следующие настройки:
location / { proxy\_set\_header Accept-Encoding ""; proxy\_pass http://backend; gzip on; gzip\_types text/plain application/json; gzip\_vary on; } -
Замените
http://backendфактическим адресом защищаемого приложения.Не создавайте дополнительный блок
location /, если он уже существует. Добавьте директивы в блок, который проксирует запросы на бэкенд.Пустое значение в директиве
proxy_set_header Accept-Encoding "";означает, что заголовокAccept-Encodingне будет передан бэкенду. В результате бэкенд вернёт несжатый ответ, фильтрующая нода выполнит его валидацию, а NGINX при необходимости сожмёт ответ для клиента.Если сжатие уже настроено на уровне
httpилиserver, достаточно добавить:proxy_set_header Accept-Encoding ""; -
После изменения проверьте конфигурацию и перечитайте её или перезапустите фильтрующую ноду.
-
Если бэкенд сжимает ответы независимо от заголовка
Accept-Encoding, отключите сжатие в конфигурации самого бэкенда.