Skip to content

Timeout

The [timeout] section sets connection timeouts and graceful shutdown behavior. Static: applied at startup.

Key Default Description
upstream_connect_ms absent (no timeout) TCP connect to backend (ms). Omitted = no limit.
proxy_idle_ms 20000 Inbound idle timeout (ms). HTTP/1.1 header read timeout, and the HTTP/2 PING interval when keep_alive.enabled is true.
tls_handshake_secs 5 Max time for the client TLS handshake, including the ClientHello read.
connection_handling_secs 300 Max time for full request/response on a connection.
drain_delay_secs 0 Phase 1 of shutdown: fail /ready (proxy_draining) while the traffic port still accepts. 0 = fail readiness and stop accept together. Size so drain_delay_secs + shutdown_secs is below the orchestrator stop grace.
shutdown_secs 30 Phase 2: stop accept and drain in-flight connections. /live stays 200 until exit.
timeout:
upstream_connect_ms: 5000
proxy_idle_ms: 20000
drain_delay_secs: 1
tls_handshake_secs: 5
connection_handling_secs: 300
shutdown_secs: 30
keep_alive:
enabled: true
upstream_idle_timeout: 20
client_tcp_idle_secs: 20
tcp_interval_secs: 10

On SIGTERM / SIGINT, /ready fails first (proxy_draining) for drain_delay_secs, then accept stops and in-flight work drains for shutdown_secs. The observability listener stays up until after drain. See Telemetry for /ready bodies.

HTTP/1.1 keep-alive, HTTP/2 PING, and TCP keepalive on the client socket and on connections to backends. HTTP/2 stays multiplexed either way. enabled = false turns off HTTP/1.1 persistence, the PINGs, and TCP keepalive in both directions.

Key Default Description
enabled true HTTP/1.1 persistent connections, HTTP/2 PING (interval is proxy_idle_ms), and TCP keepalive on the client and on backends.
upstream_idle_timeout 20 Seconds a connection to a backend can sit idle before TCP keepalive probes start.
client_tcp_idle_secs 20 Seconds a client connection can sit idle before TCP keepalive probes start. Clients that disappear without closing get dropped.
tcp_interval_secs 10 Seconds between those probes, on the client socket and on backend sockets.