Generic nginx field-note title card with Observe, Decide, and Act panels.

Choose an nginx balancing method by the decision it actually makes

An upstream group names candidate backend endpoints, and its balancing method chooses among eligible peers. Round robin distributes selections by weight; least connections considers active connections and weights; hash methods use a selected key for affinity. These decisions describe routing policy. They do not automatically measure CPU utilization, guarantee equal response times, or make local session state durable when a peer disappears. ...

May 18, 2027 · 6 min · XB Field Notes
Generic nginx field-note title card with Observe, Decide, and Act panels.

Request buffering controls when the backend receives an upload

An upload has two separate connections: client to nginx and nginx to the application. proxy_request_buffering on reads the complete client request body before sending that request upstream. Turning it off lets nginx forward body bytes as they arrive. This changes when the application becomes occupied; it does not create unlimited capacity or make a slow sender disappear. ...

April 13, 2027 · 5 min · XB Field Notes
Generic nginx field-note title card with Observe, Decide, and Act panels.

proxy_pass maps the URI as well as selecting an upstream

nginx proxy_pass chooses an upstream destination and also affects the request URI sent there. The important distinction is whether the directive includes a URI component, not simply whether its text ends with a slash. In an ordinary prefix location, a literal target URI replaces the matching normalized prefix. An authority-only target can pass the original request URI when the request has not been rewritten. ...

April 2, 2027 · 5 min · XB Field Notes
Generic nginx field-note title card with Observe, Decide, and Act panels.

Upstream keepalive caches idle connections, not active capacity

An nginx upstream keepalive cache preserves eligible idle backend connections for later requests. In the tested configuration, keepalive 2 permits two idle connections in that upstream cache for each worker. It does not restrict the worker to two active backend connections. Reuse reduces repeated connection setup; it does not itself impose an application concurrency budget or guarantee lower latency for every request. ...

March 15, 2027 · 5 min · XB Field Notes
Generic nginx field-note title card with Observe, Decide, and Act panels.

An access log separates client outcomes from upstream attempts

An nginx access log records request information when logging runs at the end of processing. The selected fields can distinguish what the client requested, which URI ultimately handled it, what response was sent, and what happened during upstream attempts. These are different observations. A useful format keeps them separate instead of assuming that one status, duration, or path explains the whole request by itself. ...

March 1, 2027 · 6 min · XB Field Notes
Title card with connected panels labeled OBSERVE, DECIDE, and ACT.

Passive upstream health follows failed traffic, not a probe timer

nginx passive upstream health uses outcomes of real requests to decide whether a peer should temporarily stop receiving traffic. max_fails sets an unsuccessful-attempt threshold, while fail_timeout supplies both the counting interval and the unavailability period. These settings do not schedule periodic application probes. Active checks require a supported checking capability and configuration beyond this passive request-outcome policy. ...

January 5, 2027 · 6 min · XB Field Notes