nginx config_error ai_generated true

client intended to send too large body: body size exceeds client_body_buffer_size

ID: nginx/client-body-buffer-overflow

Also available as: JSON · Markdown · 中文
90%Fix Rate
85%Confidence
1Evidence
2024-01-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
nginx 1.24.0 active
nginx 1.22.1 active
nginx 1.20.2 active

Root Cause

Nginx buffers the request body to a temporary file when it exceeds client_body_buffer_size, but if the body is too large and client_max_body_size is not properly set, the connection is rejected.

generic

中文

Nginx 在请求体超过 client_body_buffer_size 时将其缓冲到临时文件,但如果请求体过大且 client_max_body_size 未正确设置,连接会被拒绝。

Official Documentation

https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

Workarounds

  1. 90% success Increase client_max_body_size in http, server, or location block to allow larger bodies: `client_max_body_size 50M;`
    Increase client_max_body_size in http, server, or location block to allow larger bodies: `client_max_body_size 50M;`
  2. 80% success Ensure client_body_buffer_size is set appropriately (e.g., 128k) and that the system has enough disk space for temporary files in the path defined by client_body_temp_path.
    Ensure client_body_buffer_size is set appropriately (e.g., 128k) and that the system has enough disk space for temporary files in the path defined by client_body_temp_path.
  3. 85% success Check the actual body size in logs and set client_max_body_size accordingly. For file uploads, ensure the frontend sends the correct Content-Length header.
    Check the actual body size in logs and set client_max_body_size accordingly. For file uploads, ensure the frontend sends the correct Content-Length header.

中文步骤

  1. Increase client_max_body_size in http, server, or location block to allow larger bodies: `client_max_body_size 50M;`
  2. Ensure client_body_buffer_size is set appropriately (e.g., 128k) and that the system has enough disk space for temporary files in the path defined by client_body_temp_path.
  3. Check the actual body size in logs and set client_max_body_size accordingly. For file uploads, ensure the frontend sends the correct Content-Length header.

Dead Ends

Common approaches that don't work:

  1. 70% fail

    client_body_buffer_size only controls in-memory buffering; client_max_body_size is the actual limit.

  2. 50% fail

    This can cause upstream servers to receive partial data and may break applications that expect full body.

  3. 90% fail

    proxy_buffer_size is for response headers, not request bodies.