Иногда при обращении к сайту возникает 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