Skip to content

Proxy, cache, access and bandwidth ​

nginx responsibilityEvidence in the inspectorWhat is not established
Reverse proxyUpstream group, peers, attempts, timing, byte counters and bufferingExact backend application work
Load balancingChosen peers, retries and observed cached-connection reuseEvery candidate's weight/score or complete selection arithmetic
CachingOutcome, cache-file use, configured lock/revalidationCache keys, contents, eviction history or every bypass expression
Access controlAccess-phase hooks, auth subrequests and satisfy policyEvery allow/deny rule evaluated by every module
Request-rate limitingNative limiter outcome, including rejection/delay/dry-run when suppliedRaw accounting key or every bucket update
Connection limitingNative connection-limiter outcomeEvery shared-zone counter transition
Bandwidth controlEffective limit_rate, limit_rate_after, delayed-write snapshots and observed byte countersA continuous throughput series or proof every delayed write was caused by throttling

Effective bandwidth policy ​

The inspector reads the request's resolved byte-rate limit and unthrottled prefix after nginx has evaluated them. An unset value is unknown; zero can mean no rate limit when resolved. A configured limit differs from measured network throughput. Buffer metadata bytes also differ from wire bytes after compression and framing.

Use the live worker view to see delayed writes and the completed record to inspect output buffers and effective policy. Policy values are never changed by the inspector.

Investigating a result ​

Begin with the direct outcome: limiter status, cache outcome, auth child status, or upstream attempt. Then compare the configured policy and hook sequence. Keep inferences separate: a 503 alone is not proof of rate limiting; a final 200 can hide an earlier failed upstream attempt.

See Reading the evidence, Workers, and the primary references.

Released under the MIT License.