upstream sent too big header while reading response header from upstream, client

Исправляется добавлением двух последних строк в конфиг Nginx:

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
proxy_buffers 8 16k;
proxy_buffer_size 32k;

Если расшифровать, то proxy_buffer_size предназначен для хранения, прочтенного с бэкэнда хидера:

proxy_buffer_size and fastgci_buffer_size set buffer to read the whole of response header from backend or fastcgi server.

То есть, если Вы уже выставили 32к, а ошибка все равно появляется, то нужно тюнить дальше.

Если же просто увеличить 32к до 64к, то можно получить вот такую ошибку:

Restarting nginx: [emerg]: «proxy_busy_buffers_size» must be less than the size of all «proxy_buffers» minus one buffer in /etc/nginx/nginx.conf:34017

Итого, если указанных в самом верху настроек мало, корректируем так:

proxy_buffers 8 32k;
proxy_buffer_size 64k;

Описание параметров из официального сайта

синтаксис: proxy_buffers число размер;
умолчание: proxy_buffers 8 4k|8k;

Задаёт число и размер буферов для одного соединения, в которые будет читаться ответ, получаемый от проксируемого сервера. По умолчанию размер одного буфера равен размеру страницы. В зависимости от платформы это или 4K, или 8K.
синтаксис: proxy_busy_buffers_size размер;
умолчание: proxy_busy_buffers_size 8k|16k;

При включённой буферизации ответов проксируемого сервера, ограничивает суммарный размер буферов, которые могут быть заняты для отправки ответа клиенту, пока ответ ещё не прочитан целиком. Оставшиеся буферы тем временем могут использоваться для чтения ответа и, при необходимости, буферизации части ответа во временный файл. По умолчанию размер ограничен двумя буферами, заданными директивами proxy_buffer_size и proxy_buffers.

Опубликовано в nginx

Рубрики