October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

How to Stop NGINX Buffering POST Requests

Set proxy_request_buffering off in the correct NGINX location to send POST bodies upstream as they arrive. This guide explains protocol caveats, version limits, response buffering, temporary files, verification, and failover trade-offs.
Length10 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To stream a proxied POST body to your upstream as the client sends it, set proxy_request_buffering off; in the location that handles the endpoint, then validate and reload NGINX. The directive defaults to on; with buffering enabled, NGINX reads the complete request body before connecting it to the upstream.

The setting that disables request-body buffering

Put the directive in the narrowest block that should stream uploads—normally the endpoint’s location:

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
location /upload/ {
    proxy_request_buffering off;
    proxy_pass http://backend;
}

With this setting, NGINX forwards the request body to the proxied server as it receives bytes from the client. The NGINX documentation describes the behavior directly: when buffering is disabled, “the request body is sent to the proxied server immediately as it is received.” When buffering is enabled, NGINX reads the entire body from the client before sending the request upstream.

The directive can also be placed in an http or server block, but broad scope affects every matching proxied request. A location-level setting limits the change to the upload or streaming endpoint that needs it.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.

What changes when buffering is off

Normally, a proxied POST follows this sequence:

  1. The client starts sending the request and body to NGINX.
  2. NGINX reads the body into its configured request buffers and, when necessary, temporary files.
  3. Only after the body has been read does NGINX send the request to the upstream application.

That sequence makes the upstream wait for slow clients and can make an upload appear to “arrive all at once.” Setting proxy_request_buffering off; changes the second and third steps. NGINX passes the body upstream as it arrives, so an application can begin processing or measuring the upload before the client has finished.

Streaming does not remove the need for request-size limits, timeouts, authentication, or storage controls. It changes when bytes are sent upstream, not whether the request is accepted, how large it may be, or how the application must handle a partial body.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not confuse request buffering with response buffering

NGINX has separate directives for the two directions of a reverse-proxy exchange. The names are similar, but they solve different problems.

Directive Data direction Default What it controls Typical reason to disable it
proxy_request_buffering Client to upstream on Whether NGINX waits for the complete request body before sending it to the proxied server An upload, ingest, or long POST must be consumed upstream while the client is still sending
proxy_buffering Upstream to client on Whether NGINX buffers the response received from the proxied server before delivering it to the client The response itself must be delivered incrementally, such as a streaming endpoint
client_body_buffer_size Client request body inside NGINX 8K or 16K, depending on platform The memory buffer used while NGINX reads the request body; excess data may be written to a temporary file Changing memory and temporary-file behavior, not enabling upstream streaming

Turning off proxy_buffering will not stop NGINX from collecting an incoming POST body. Conversely, turning off proxy_request_buffering does not guarantee that an upstream response will reach the client immediately. Configure each direction independently.

Place the directive where the request is actually handled

NGINX chooses a location based on the request URI, and a more-specific location can override a value inherited from a broader block. A common reason for apparently ignored settings is that the upload request is being processed by a different location than the one edited.

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed

Use a dedicated upload location

server {
    listen 443 ssl;
    server_name example.invalid;

    location /upload/ {
        proxy_request_buffering off;
        proxy_pass http://upload_backend;
    }

    location / {
        proxy_pass http://web_backend;
    }
}

This keeps ordinary application requests on the default behavior while streaming only the endpoint that needs it.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check for overrides

  • Look for nested or regular-expression locations that can match the same URI.
  • Check included files for another proxy_request_buffering declaration.
  • Confirm that the request is reaching the expected virtual server, rather than a different server block selected by the host name or port.
  • Inspect the complete active configuration with nginx -T, not just the file you edited.

After changing the configuration, validate it and perform a reload through your normal service manager or NGINX control command. A reload applies the new configuration to new workers without requiring a full stop/start cycle.

Protocol and version caveats

Chunked request bodies

Chunked transfer encoding is the most common reason an administrator still sees request-body buffering after setting the directive. NGINX documents that, when the client sends a chunked request body, the original body can still be buffered unless HTTP/1.1 or HTTP/2 is enabled for proxying.

Check the protocol used on the NGINX-to-upstream connection, not only the browser-to-NGINX connection. If the upstream connection uses the default older HTTP behavior, NGINX may not be able to pass the chunked body as a stream. Configure an upstream protocol that supports the request framing required by your application, then verify the effective configuration and observe the upstream timestamps.

location /upload/ {
    proxy_request_buffering off;
    proxy_http_version 1.1;
    proxy_pass http://backend;
}

The exact protocol choice depends on the upstream server and its support for HTTP/1.1 or HTTP/2. Do not assume that enabling HTTP/1.1 on one side automatically changes the other side.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)

HTTP/2 support in older NGINX releases

Before NGINX 1.9.14, HTTP/2 request-body buffering could not be disabled. If an older deployment terminates or proxies HTTP/2 and requires an unbuffered request body, upgrade NGINX before relying on this behavior. The proxy_request_buffering directive itself was introduced in NGINX 1.7.11, so older versions may not recognize it at all.

Check the running binary, rather than assuming the version from a package name or configuration repository. A configuration copied from a newer host can fail validation—or appear to work differently—on an older host.

How client_body_buffer_size affects large POSTs

client_body_buffer_size is often changed while investigating uploads, but it is not the switch that streams a request to the upstream. It controls the amount of memory NGINX uses while reading the client body. The documented defaults are 8K or 16K, depending on platform. If the body exceeds the available buffer, all or part of it may be written to a temporary file.

Increasing this value can reduce temporary-file writes for bodies that fit in memory, but it also increases potential memory consumption per active request. Reducing it can conserve memory while causing more disk I/O. Neither choice makes the upstream receive data earlier when proxy_request_buffering remains enabled.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What to review when uploads spill to disk

  • Available space and write performance in NGINX’s request-body temporary-file location.
  • Memory limits and the maximum number of concurrent upload requests.
  • Whether the operating system or container imposes a separate disk quota.
  • Cleanup behavior for interrupted or rejected requests.

With request buffering disabled, NGINX still has to read and manage incoming data, so memory and temporary-file limits remain operational concerns. Streaming reduces the time before the upstream sees bytes; it does not eliminate resource accounting.

Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC

Apply the change safely: a step-by-step procedure

  1. Identify the endpoint. Record the exact URI, host name, listener, and upstream that handle the POST. Include any trailing-slash or rewrite behavior that could change the final location.
  2. Find the effective location. Search the loaded configuration and confirm which location wins for the request. Do not rely only on the apparent file layout.
  3. Add the request directive. Place proxy_request_buffering off; in that location. Keep it scoped to the endpoint unless every proxied request in the server genuinely needs streaming.
  4. Check the upstream protocol. If clients use chunked transfer encoding, verify that the NGINX-to-upstream proxying protocol is HTTP/1.1 or HTTP/2 and that the backend supports it.
  5. Validate the complete configuration. Run nginx -T to inspect the generated configuration and use your normal configuration-test command before reloading.
  6. Reload NGINX. Reload rather than abruptly stopping the service, then confirm that new workers have accepted the configuration.
  7. Test with a slow body. Send a request whose body takes a measurable amount of time to transmit. Use application or upstream logs to determine when the first bytes arrive and when subsequent chunks are consumed.
  8. Test a complete request as well. Confirm status codes, authentication, maximum-body handling, disconnect behavior, and application cleanup for both successful and interrupted uploads.

How to verify that the upstream receives data early

Client-side timing alone is not proof of upstream streaming. A client can report upload progress while NGINX is still buffering, and network buffering can obscure small writes. Instrument the upstream application or a test backend to log:

  • the time the request headers are accepted;
  • the time the first body bytes are read;
  • the arrival time and size of later reads; and
  • the time the body reaches its expected end.

Use a body large or slow enough to separate these events. Compare a request with proxy_request_buffering on against one with it off, keeping the same client, route, upstream, and payload. The expected difference is that the first body-read event occurs while the client is still transmitting, rather than only after the upload completes.

Also test a request using chunked transfer encoding if that is how production clients send uploads. A test using a fixed Content-Length does not establish that chunked uploads will behave identically.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot the common failure modes

The upstream receives the body only after upload completion

  • Confirm that the request matched the location containing proxy_request_buffering off;.
  • Inspect nginx -T for a more-specific location or later include that restores buffering.
  • Check the running NGINX version and whether the request uses a protocol with known buffering limitations.
  • Verify that your measurement is in the upstream application, not only in the client or NGINX access log.

Chunked uploads are still buffered

Verify the protocol on the proxy-to-upstream hop. NGINX can buffer the original chunked body unless HTTP/1.1 or HTTP/2 is enabled for proxying. Confirm the backend accepts the selected protocol and that no intermediary between NGINX and the backend is re-buffering the request.

The directive causes a configuration error

The directive is unavailable in NGINX versions before 1.7.11. Check the binary actually serving traffic and upgrade if necessary. A package repository’s current version does not change an already running worker until the service is restarted or reloaded with that binary.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.

Responses are still delayed

You may be solving the opposite direction. proxy_request_buffering off; affects the client-to-upstream body. If the upstream sends a response progressively and the client must see it immediately, evaluate proxy_buffering off; separately. Disabling response buffering has its own memory, throughput, and connection-management consequences and should not be used as a substitute for the request directive.

Temporary files or memory usage remain high

Review client_body_buffer_size, the request-body temporary-file location, concurrency, body-size limits, and client disconnect rates. Turning off proxy request buffering does not guarantee that no request data will ever be held locally; NGINX still needs buffers and may need temporary storage under the active request-processing conditions.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Trade-offs of streaming request bodies

Earlier processing versus retry flexibility

Once NGINX has started sending the request body upstream, it cannot hand that same request to a different upstream server. This matters when an upstream fails during body transmission: normal failover expectations may no longer apply because part of the body has already been delivered. Design retries at the application or upload-session layer when a request is not safely replayable.

Back-pressure and slow upstreams

Streaming couples the client upload more closely to the upstream’s ability to read. If the application reads slowly, NGINX may apply back-pressure to the client instead of absorbing the entire body first. That can be desirable for bounded memory use, but it changes connection duration and timeout behavior.

Resource placement

Buffered requests consume NGINX memory and potentially temporary-file space before the application sees them. Unbuffered requests shift more work to the upstream while the client remains connected. Choose the mode based on where you can enforce limits, monitor pressure, authenticate early, and recover from disconnects.

Choosing the right settings by requirement

Requirement Primary setting What to verify
Send a POST body upstream while it is still uploading proxy_request_buffering off; Correct location, supported NGINX version, and upstream protocol
Deliver an upstream response to the client incrementally proxy_buffering off; Response behavior, client compatibility, and resource impact
Reduce memory used while reading request bodies client_body_buffer_size Temporary-file capacity and disk I/O; this does not enable streaming
Support chunked upload streaming proxy_request_buffering off; plus HTTP/1.1 or HTTP/2 proxying where appropriate Protocol on the NGINX-to-upstream connection and backend support
Preserve upstream failover after body transmission begins No buffering directive can guarantee this Once transmission starts, NGINX cannot switch that request to another upstream

Operational checklist

  • Use proxy_request_buffering off; for the specific proxied POST endpoint that needs early upstream delivery.
  • Do not use proxy_buffering off; to solve incoming request-body buffering.
  • Confirm the effective location and inspect the generated configuration with nginx -T.
  • Check the running NGINX version: the request directive appeared in 1.7.11, and HTTP/2 request-body buffering could not be disabled before 1.9.14.
  • For chunked bodies, verify HTTP/1.1 or HTTP/2 on the proxying connection.
  • Treat client_body_buffer_size as a memory and temporary-file setting, not a streaming control.
  • Measure first-byte arrival in the upstream application with a deliberately slow or long request body.
  • Revisit failover, timeouts, body limits, authentication, and cleanup for partial uploads.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.