Re: X-Accel-Buffering и fastcgi buffering - большие заголовки

Maxim Dounin mdounin на mdounin.ru
Пт Дек 4 13:58:22 UTC 2015


Hello!

On Fri, Dec 04, 2015 at 05:28:36AM -0500, iotch wrote:

> При отправке бэкэндом, работающим через fast cgi заголовков, больше чем 16
> кб, получаю ошибку 502 и "upstream sent too big header while reading
> response header from upstream". Версия nginx 1.9.7.

Заголовок ответа должен целиком помещаться в fastcgi_buffer_size,
http://nginx.org/r/fastcgi_buffer_size/ru.  Ошибка говорит о том, что 
он не помещается.

> Пробовал добавлять первым заголовком "X-Accel-Buffering: no" - эффекта не
> дает. Пробовал устанавливать fastcgi_buffering: off; в нужном location, в
> server и в http - то же самое.
> 
> Имеют ли значения параметра "fastcgi_buffering" и заголовка ответа бэкэнда
> "X-Accel-Buffering", при отправке бэкэндом слишком больших заголовков? 
> 
> Правильно ли я понимаю, что "X-Accel-Buffering" может быть применен только
> после полного чтения всех заголовков и если заголовки слишком большие для
> текущей конфигурации эффекта от него не будет?

Ни fastcgi_buffering, ни X-Accel-Buffering не обеспечивают 
возможность чтения ответов с заголовком, размер которого превышает 
fastcgi_buffer_size.

Оба они влияют на то, как читается и отправляется клиенту тело 
ответа: по умолчанию nginx пытается минимизировать количество 
совершаемой работы и дожидается, пока бекенд заполнит буфер 
целиком, и только после этого отсылает его клиенту.  В случае же, 
если буферизация отключена, nginx сразу отсылает клиенту все 
полученные от бекенда данные - это может быть важно, e.g., для 
стриминга ответов.

> Дело в том, что приложение отправляет в заголовках информацию для отладки и
> хотелось бы контролировать буфферизацию из самого приложения, только когда
> большие заголовки действительно отсылаются. Возможно ли это?

Судя по вопросу, вам надо контролировать не буферизацию, а 
размер fastcgi_buffer_size.  Это можно делать только из конфига 
nginx'а.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru