# proxy request body too large for buffering

- **ID:** `nginx/proxy-request-body-too-large-for-buffering`
- **Domain:** nginx
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 85%

## Root Cause

The upstream server expects a Content-Length header, but the request body exceeds proxy_buffer_size and buffering is disabled, causing nginx to fail to forward the request.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| nginx 1.24.0 | active | — | — |
| nginx 1.22.1 | active | — | — |
| nginx 1.20.2 | active | — | — |

## Workarounds

1. **Increase proxy_buffer_size to accommodate the expected request body size, e.g., add 'proxy_buffer_size 8k;' or larger in the location or http block.** (85% success)
   ```
   Increase proxy_buffer_size to accommodate the expected request body size, e.g., add 'proxy_buffer_size 8k;' or larger in the location or http block.
   ```
2. **Enable proxy request buffering by setting 'proxy_request_buffering on;' (default) and ensure proxy_buffer_size is at least the size of typical request bodies.** (90% success)
   ```
   Enable proxy request buffering by setting 'proxy_request_buffering on;' (default) and ensure proxy_buffer_size is at least the size of typical request bodies.
   ```
3. **If the upstream can handle chunked transfer encoding, disable the Content-Length requirement by adding 'proxy_http_version 1.1;' and 'proxy_set_header Connection "";' to allow chunked requests.** (75% success)
   ```
   If the upstream can handle chunked transfer encoding, disable the Content-Length requirement by adding 'proxy_http_version 1.1;' and 'proxy_set_header Connection "";' to allow chunked requests.
   ```

## Dead Ends

- **** — client_max_body_size only limits the client request body size; the proxy buffer error is about how nginx forwards the body to upstream. (90% fail)
- **** — Disabling buffering forces nginx to hold the entire body in a single buffer; if the body exceeds proxy_buffer_size, the error persists. (70% fail)
- **** — proxy_buffering controls response buffering from upstream, not request body buffering to upstream. (95% fail)
