[warn] a client request body is buffered to a temporary file

Илья Шипицин chipitsine на gmail.com
Вт Июл 12 19:27:32 UTC 2022


ср, 13 июл. 2022 г. в 00:16, Gena Makhomed <gmm на csdoc.com>:

> On 12.07.2022 20:12, Илья Шипицин wrote:
>
> >> и еще примерно 20% - это "предупреждения" о том, что
> >> a client request body is buffered to a temporary file
>
> > это же можно выключить через proxy_request_buffering ?
>
> Да, в моем случае - это вполне подходит, спасибо.
>
>      proxy_http_version 1.1;
>      proxy_request_buffering off;
>
> Потому что у меня у каждого nginx frontend
> есть всего один nginx backend для каждого сайта:
> nginx frontend <=> nginx backend <=> php-fpm
>
> Самое главное - не забыть включить директиву proxy_http_version 1.1;
> на nginx frontend, иначе будут проблемы из-за использования HTTP/1.0
>
>
> https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering
>
> When HTTP/1.1 chunked transfer encoding is used to send the original
> request body, the request body will be buffered regardless of the
> directive value unless HTTP/1.1 is enabled for proxying.
>

HTTP/1.1 обычно включаю, но до этого места в документации про chunked не
дочитал ))


>
> >> Еще - было бы очень хорошо, чтобы nginx умел писать логи на диск
> >> не до тех пор, пока там останется 0 байт свободного места, а хотя
> >> бы оставлял 1 гигабайт для файлов в /var/cache/nginx/client_temp
>
> > буферизация на диск имеет кучу побочных эффектов.
> > можно через Модуль ngx_http_proxy_module (nginx.org)
> > <
> https://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_max_temp_file_size
> >
> > выключить дисковую часть (оставив буферизацию в памяти)
>
> Директива proxy_max_temp_file_size 0; на nginx frontend у меня прописана
> Но она влияет только на буферизацию проксируемых от backend`ов ответов.
>
> Полностью отключить использование диска nginx frontend
> для проксирования и запросов и ответов можно
> с помощью такого набора директив:
>
>      proxy_http_version 1.1;
>      proxy_request_buffering off;
>      proxy_max_temp_file_size 0;
>

не совсем верно. если не трогать proxy_buffering, то ответы буферизуются (в
памяти, но не на диске)


>
> Однако это имеет смысл только в том случае, если nginx frontend
> проксирует запросы на nginx backend, на котором включена буферизация


если у бекенда форк-модель, и дорогое подключение, которое желательно
максимально быстро освободить, даже ценой буферизации на диск, то да.
для многих современных бекендов, включач php-fpm, поддержание 10к
одновременных подключений не является проблемой, кажется, что буферизация
на диск скорее избыточна, и по факту не решает никаких проблем, но может их
создать

>
> запросов и ответов на диск. Если в качестве backend`а используется
> httpd apache - использование диска для буферизации
> наверное лучше будет не выключать.
>

верно


>
> --
> Best regards,
>   Gena
> _______________________________________________
> nginx-ru mailing list -- nginx-ru на nginx.org
> To unsubscribe send an email to nginx-ru-leave на nginx.org
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20220713/1e62c57c/attachment.htm>


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