# 客户端试图发送过大的请求体：请求体大小超过 client_body_buffer_size

- **ID:** `nginx/client-body-buffer-overflow`
- **领域:** nginx
- **类别:** config_error
- **验证级别:** ai_generated
- **修复率:** 90%

## 根因

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

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| nginx 1.24.0 | active | — | — |
| nginx 1.22.1 | active | — | — |
| nginx 1.20.2 | active | — | — |

## 解决方案

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.
   ```

## 无效尝试

- **** — client_body_buffer_size only controls in-memory buffering; client_max_body_size is the actual limit. (70% 失败率)
- **** — This can cause upstream servers to receive partial data and may break applications that expect full body. (50% 失败率)
- **** — proxy_buffer_size is for response headers, not request bodies. (90% 失败率)
