Перейти к содержанию

Настройка обработки сжатых ответов бэкенда

Если бэкенд возвращает ответ, сжатый с помощью gzip, может возникнуть ошибка валидации тела ответа.

Чтобы фильтрующая нода валидировала несжатое тело, настройте NGINX так, чтобы он не передавал бэкенду заголовок Accept-Encoding. При необходимости NGINX сожмёт ответ после валидации – перед отправкой.

Шаги настройки NGINX

  1. Откройте файл конфигурации фильтрующей ноды:

    node/conf/nginx/wmx.nginx.conf

  2. Найдите блок location, содержащий директиву proxy_pass, и добавьте в него следующие настройки:

    location / {  
        proxy\_set\_header Accept-Encoding "";
    
        proxy\_pass http://backend;
    
        gzip on;  
        gzip\_types text/plain application/json;  
        gzip\_vary on;  
    }
    

  3. Замените http://backend фактическим адресом защищаемого приложения.

    Не создавайте дополнительный блок location /, если он уже существует. Добавьте директивы в блок, который проксирует запросы на бэкенд.

    Пустое значение в директиве proxy_set_header Accept-Encoding ""; означает, что заголовок Accept-Encoding не будет передан бэкенду. В результате бэкенд вернёт несжатый ответ, фильтрующая нода выполнит его валидацию, а NGINX при необходимости сожмёт ответ для клиента.

    Если сжатие уже настроено на уровне http или server, достаточно добавить: proxy_set_header Accept-Encoding "";

  4. После изменения проверьте конфигурацию и перечитайте её или перезапустите фильтрующую ноду.

  5. Если бэкенд сжимает ответы независимо от заголовка Accept-Encoding, отключите сжатие в конфигурации самого бэкенда.