Если текст подобной ошибки вы обнаружите в логах ngnix, то см. как её исправить в данной статье.
Ошибка связана с недостаточным размером буфера для передачи заголовка запроса. Во-первых, надо разобраться что является в данном случае upstream-ом, т.е. где требуется увеличить буфер.
В зависимости от того, как вы используете nginx, может понадобиться скорректировать размер буферов для одного из следующих компонентов: proxy, fastcgi или uwsgi. Или возможно для нескольких из них сразу.
По умолчанию размер буфера составляет 4/8 kb, чего обычно достаточно. Но при отправке сложных форм, этот лимит может оказаться исчерпан, тогда следует экспериментально подобрать размер буфера для вашего случая (увеличивая его, пока не пропадет данная ошибка).
Если проблема связана с использованием fastcgi (например вы используете связку с PHP) то добавьте или поменяйте в секции http следующие параметры:
1 2 3 4 5 |
http { fastcgi_buffers 32 32k; fastcgi_buffer_size 64k; ... } |
Аналогично для proxy и uwsgi:
1 2 3 4 5 6 |
http { proxy_buffers 32 32k; proxy_buffer_size 64k; uwsgi_buffers 32 32k; uwsgi_buffer_size 64k; } |
Возможно, что после правок (и перезапуска) nginx, ошибка в логах самого nginx появляться перестанет, но сама проблема, проявляющаяся как 5xx http ошибка не исчезнет. Это значит, что вы используете еще какой то софт, который проксирует nginx, и теперь скорее всего нужно решать данную проблему уже там.
Та же проблема, но уже из за Varnish
В моём случае это был varnish, потому я дополнительно расскажу как это поправить для него.
Нам нужно поправить значения буферов задаваемых тремя переменными: http_req_hdr_len, http_resp_hdr_len и http_max_hdr.
Для начала вы можете проверить текущие значения, используя в командной строке утилиту varnishadm (пример вывода):
1 2 3 4 5 6 7 8 9 10 11 12 |
[varnish]# varnishadm param.show http_max_hdr http_max_hdr Value is: 512 [header lines] Default is: 64 Minimum is: 32 Maximum is: 65535 Maximum number of HTTP header lines we allow in {req|resp|bereq|beresp}.http (obj.http is autosized to the exact number of headers). Cheap, ~20 bytes, in terms of workspace memory. Note that the first line occupies five header lines. |
В моём примере значение уже скорректировано (установлено 512 вместо 64). А вам требуется добавить значения параметров в DAEMON_OPS в файле /etc/varnish/varnish.params (пример):
1 |
DAEMON_OPTS="-p http_req_hdr_len=32k -p http_resp_hdr_len=32k -p http_max_hdr=512" |