ERR_HTTP2_PROTOCOL_ERROR: Find the Misbehaving Layer

Symptom

Browser loads die with ERR_HTTP2_PROTOCOL_ERROR (or 200 with empty body).

Root cause

Header too large, HPACK edge case, or a proxy mangling frames.

Fix, in order

1. Isolate: does HTTP/1.1 work?curl --http1.1 -I https://yourdomain/path
2. Test with HTTP/2 directly against origincurl --http2 -I https://yourdomain/path
3. Oversized headers are the top offenderlarge_client_header_buffers 4 32k; # nginx

Prevent it coming back

Keep cookies/headers lean; upgrade proxies together, not piecemeal.

Run it on clean infra

Spinning up a fresh box to reproduce or escape this error?

Managed cloud hosting

Related

Cloud & DevOps tool comparisons · Hardware build guides

NinjaOps publishes free engineering guides. Some outbound links are affiliate links: they cost you nothing and support the site.

Last reviewed 2026-10-02 · NinjaOps SEO grid · DevOps blog