oauth2-proxy/pkg/apis
Mateen Anjum c2a5dfa4ea
feat(upstream): add configurable transport buffer sizes for large uploads
Large PUT/POST uploads (>60MB) fail with context canceled when an nginx
reverse proxy sits in front of oauth2-proxy. The root cause is that
http.Transport inherits Go's default 4KB WriteBufferSize, requiring
~15,000 write syscalls for a 60MB upload. This generates backpressure
on the nginx->oauth2-proxy pipe. Once nginx hits proxy_read_timeout
between consecutive write ops, it closes the connection, canceling
req.Context(), which propagates as context canceled on the in-flight
RoundTrip to the upstream.

Expose writeBufferSize and readBufferSize on the Upstream config struct,
wired to transport.WriteBufferSize and transport.ReadBufferSize in
newReverseProxy. Both default to 0 (preserving current behavior, Go
uses 4KB). Setting writeBufferSize to 65536 (64KB) reduces write
syscalls by 16x and resolves the timeout correlation for large uploads.

Fixes #3389

Signed-off-by: Mateen Anjum <mateenali66@gmail.com>
2026-03-29 05:48:01 -04:00
..
ip Move RealClientIP code to IP packages 2020-05-23 15:17:41 +01:00
middleware adapting unit tests and fixing minor issues introduced with the derefing 2025-11-16 22:38:57 +01:00
options feat(upstream): add configurable transport buffer sizes for large uploads 2026-03-29 05:48:01 -04:00
sessions fix: improve logging when session refresh token is missing (#3327) 2026-03-23 10:54:32 +01:00