W moich plikach dziennika pojawia się następujący błąd przy każdej próbie przesłania dużego pliku.
a client request body is buffered to a temporary file /var/lib/nginx/body/0000000001
Mimo że plik został przesłany pomyślnie, zawsze pojawia się powyższy błąd.
Zwiększyłem, client_body_buffer_size
do 1000m
czego oczekuję największego przesłanego pliku. Jest to jednak tylko przypuszczenie i chociaż nie otrzymuję już tego błędu, zastanawiam się, czy jest to odpowiednia wartość dla client_body_buffer_size
?
Byłbym wdzięczny, gdyby ktokolwiek mógł rzucić nieco światła na tę dyrektywę i sposób jej stosowania.
Odpowiedzi:
To ostrzeżenie, a nie błąd. Właśnie dlatego zostało poprzedzone
[warn]
w dzienniku.Oznacza to, że rozmiar przesłanego pliku był większy niż bufor w pamięci zarezerwowany do przesłania.
Dyrektywa
client_body_buffer_size
kontroluje rozmiar tego bufora.Jeśli możesz sobie pozwolić na 1 GB pamięci RAM zawsze zarezerwowanej do sporadycznego przesyłania plików, to w porządku. Optymalizacja wydajności polega na buforowaniu przesyłania w pamięci RAM, a nie w pliku tymczasowym na dysku, chociaż przy tak dużych przesyłaniach kilka dodatkowych sekund prawdopodobnie nie ma większego znaczenia. Jeśli większość przesłanych plików jest niewielka, prawdopodobnie jest to marnotrawstwo.
Ostatecznie tylko Ty naprawdę możesz podjąć decyzję, jaki jest odpowiedni rozmiar.
źródło
Jeśli nie chcesz, aby NginX przechowywał treść w pliku tymczasowym, możesz ustawić swoją konfigurację. lubię to:
Jeśli ustawisz obie te konfiguracje na tym samym maks. rozmiar (w k, M lub G odpowiednio dla kB, MB lub GB), zapobiegniesz tworzeniu przez NginX temp. plik.
Aby uzyskać więcej informacji: http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size i http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
źródło
client_max_body_size
parametr. Zobacz informacje na ten link: client_max_body_size doc. :Sets the maximum allowed size of the client request body, specified in the “Content-Length” request header field. If the size in a request exceeds the configured value, the 413 (Request Entity Too Large) error is returned to the client. Please be aware that browsers cannot correctly display this error. Setting size to 0 disables checking of client request body size.