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»
2017/08/04 11:41:30 [error] 1515#0: *320915 upstream sent too big header while reading response header from upstream, client: 88.86.216.220, server: , request: «POST /order/ajax_make_order HTTP/1.1», upstream: «http://127.0.0.1:80/order/ajax_make_order», 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;
}

 

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

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

nginx -s reload