Upstream sent too big header в логе Nginx


Иногда при обращении к сайту возникает 502 ошибка, в логе Nginx при этом можно наблюдать такую ошибку Upstream sent too big header:


2017/08/04 11:39:53 [error] 1514#0: *320874 upstream sent too big header while reading response header from upstream, client: 88.86.216.220, server: , request: "GET /order/complete HTTP/1.1", upstream: "http://127.0.0.1:80/order/complete", host: "www.example.com", referrer: "http://www.example.com/order"

Причиной может быть то, что программный код сайта отправляет клиенту cookie слишком большого размера. Это говорит о недоработках кода, часто — о недоработках кода при настройке шифрования cookie.



Как устранить ошибку Upstream sent too big header


Ошибку 502 при появлении в логе записи про слишком большие заголовки можно решить либо модификацией кода, либо увеличением лимитов сервера.




Проще всего увеличить лимиты сервера — в основном конфигурационном файле /etc/nginx/nginx.conf в секцию http для этого необходимо добавить:



http {
proxy_buffer_size 32k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 32k;
}

Настройки проксирования нужны если Nginx используется как прокси, приведенные ниже параметры обязательны.



В секцию server добавляем (или корректируем существующие значения параметров):


server {

fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
}


Пример приведен на скриншоте (фрагмент файла /etc/nginx/nginx.conf)


Upstream sent too big header ошибка Nginx


Также записи обоих видов могут существовать в секции location — в этом случае их тоже нужно скорректировать. Менять значения лучше начиная с location — самого локального контекста. Если после смены значений в location ошибки остаются можно переходить к более глобальным контекстам.

Подробное описание структуры конфигурационных файлов nginx и контекстов можно найти в материале доступном по ссылке.

Значения параметров при необходимости можно поднимать кратно и проверять результат.



Чтобы изменения вступили в силу сервису требуется перечитать конфигурационные файлы

nginx -s reload

Сказать спасибо