web-dev-qa-db-fra.com

nginx - le corps de la demande client est mis en mémoire tampon dans un fichier temporaire

J'obtiens l'erreur suivante dans mes fichiers journaux chaque fois que j'essaie de télécharger un gros fichier.

a client request body is buffered to a temporary file /var/lib/nginx/body/0000000001

Bien que le fichier soit téléchargé avec succès, j'obtiens toujours l'erreur ci-dessus.

J'ai augmenté le client_body_buffer_size à 1000m c'est ce que j'attends du plus gros fichier téléchargé. Cependant, ce n'était qu'une supposition et bien que je n'obtienne plus cette erreur, je me demande si c'est une valeur appropriée à définir pour le client_body_buffer_size?

J'apprécierais que quelqu'un puisse faire la lumière sur cette directive et sur la manière de l'utiliser.

53
Abs

Ceci est un avertissement, pas une erreur. C'est pourquoi il a été précédé de [warn] dans le journal.

Cela signifie que la taille du fichier téléchargé était supérieure à la mémoire tampon en mémoire réservée aux téléchargements.

La directive client_body_buffer_size contrôle la taille de ce tampon.

Si vous pouvez vous permettre d'avoir 1 Go de RAM toujours réservé pour le téléchargement de fichiers occasionnel, alors ça va. C'est une optimisation des performances pour tamponner le téléchargement dans RAM plutôt que dans un fichier temporaire sur le disque, mais avec des téléchargements aussi importants, quelques secondes supplémentaires n'ont probablement pas beaucoup d'importance. Si la plupart de vos téléchargements sont petits, c'est probablement un gaspillage.

En fin de compte, vous seul pouvez vraiment décider de la taille appropriée.

56
Michael Hampton

Si vous ne souhaitez pas que NginX stocke le contenu du corps dans un fichier temporaire, vous pouvez définir votre configuration. comme ça:

    client_body_buffer_size     10M;
    client_max_body_size        10M;

Si vous définissez ces deux configurations au même max. (en k, M ou G pour kB, Mo ou Go, respectivement), vous éviterez que NginX crée un temp. fichier.

Pour plus d'informations: http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size et http://nginx.org/en/docs/http/ngx_http_core_module .html # client_max_body_size

20
eddy85br