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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru