Иногда при обращении к сайту возникает 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)
Также записи обоих видов могут существовать в секции location — в этом случае их тоже нужно скорректировать. Менять значения лучше начиная с location — самого локального контекста. Если после смены значений в location ошибки остаются можно переходить к более глобальным контекстам.
Подробное описание структуры конфигурационных файлов nginx и контекстов можно найти в материале доступном по ссылке.
Значения параметров при необходимости можно поднимать кратно и проверять результат.
Чтобы изменения вступили в силу сервису требуется перечитать конфигурационные файлы
nginx -s reload