Error map
WebSocket connection failed through Nginx (missing Upgrade headers) Browser: WebSocket connection to 'wss://example.com/socket' failed: Error during WebSocket handshake: Unexpected response code: 400 (nginx proxy)
Nginx / Apache · layer 3, Edge & web server
Centre: this error. First ring: errors it is linked with (7). Outer ring: what those are linked with. Colours show the layer of a request each error belongs to. Click any dot to re-centre the map on it; hover to follow its connections. The centre dot opens the error page.
Directly related (7)
HTTP 400 Bad Request
The server could not understand the request because its syntax, headers or body are malformed or invalid.
Cloudflare-branded 502 Bad Gateway / 504 Gateway Timeout ("cloudflare" footer)
A plain-looking 502/504 page with “cloudflare” at the bottom comes from Cloudflare’s network itself (or an origin response it cou…
Nginx: [error] SSL_do_handshake() failed (SSL: error:0A000410:SSL routines::sslv3 alert handshake failure) while SSL handshaking to upstream
Nginx couldn't complete TLS to an HTTPS backend (`proxy_pass https://...`), so clients get 502.
Nginx: [error] upstream sent too big header while reading response header from upstream (502 Bad Gateway)
The backend's response headers (cookies, Set-Cookie, long headers) exceeded Nginx's proxy/fastcgi buffer size.
Nginx: [error] connect() failed (111: Connection refused) while connecting to upstream, upstream: "http://127.0.0.1:3000/"
Nginx tried to proxy a request but nothing listens on the upstream address, so the client gets 502.
Nginx: reverse proxy returns 404 — location /api/ { proxy_pass http://app:3000/; } strips the prefix (or keeps it)
Whether `proxy_pass` has a URI part decides if the matched prefix is stripped, so the backend receives an unexpected path.
Nginx: [error] no resolver defined to resolve api.example.com, client: 203.0.113.5 (502 when proxy_pass uses a variable)
`proxy_pass` with a variable (or `set $upstream`) needs a `resolver`, which isn't configured.
Two steps away (21)
HTTP 401 Unauthorized
The request has no valid authentication credentials — you need to log in or send a valid token.
HTTP 405 Method Not Allowed
The URL exists, but it doesn’t accept the HTTP method you used (e.g. POST to a GET-only route).
HTTP 413 Content Too Large (Request Entity Too Large)
The request body is bigger than the server is willing to accept — usually a file upload over the configured limit.
HTTP 502 Bad Gateway
A proxy or gateway (Nginx, load balancer, CDN) got an invalid response — or no response — from the upstream server behind it.
HTTP 504 Gateway Timeout
A proxy or gateway waited too long for the upstream server to respond and gave up.
Cloudflare Error 520: Web Server Returned an Unknown Error
Cloudflare connected to your origin, but the origin returned an empty, unknown or invalid response.
Cloudflare Error 525: SSL Handshake Failed
Cloudflare couldn’t complete a TLS handshake with your origin (SSL mode Full / Full strict).
Cloudflare Error 526: Invalid SSL Certificate
With SSL mode Full (strict), the origin’s certificate is expired, self-signed, or doesn’t match the hostname.
OpenSSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure (SSL alert number 40)
The server aborted the handshake with alert 40 — no acceptable parameters (cipher, signature algorithm, client certificate or SNI…
Nginx: [error] recv() failed (104: Connection reset by peer) while reading response header from upstream
The upstream (PHP-FPM, Node, Gunicorn) closed the connection abruptly while Nginx waited for the response.
Nginx: [error] FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysqli_connect()" while reading response header from upstream
PHP wrote an error to stderr while handling the request, so Nginx logs it (often a 500/502 follows).
Nginx: 400 Bad Request — Request Header Or Cookie Too Large / client sent too long header line
The request line or headers (often cookies) exceed `large_client_header_buffers`.
Nginx: [error] no live upstreams while connecting to upstream (503/502)
All servers in an `upstream` group are marked unavailable, so Nginx has nothing to proxy to.
Nginx: [error] upstream prematurely closed connection while reading response header from upstream
The backend ended the connection before sending a complete response header.
Nginx: nginx: [emerg] host not found in upstream "app" in /etc/nginx/conf.d/default.conf:5
Nginx couldn't resolve the hostname in an `upstream`/`proxy_pass` at startup.
HTTP 404 Not Found
The server can’t find anything at the requested URL.
TypeError: Missing parameter name at 1 (path-to-regexp)
An Express 5 (path-to-regexp v8) route uses old wildcard syntax like '*' or '/:id?'.
Ingress returns "404 Not Found" / "default backend - 404" (ingress-nginx)
The ingress controller received the request but no Ingress rule matched the host/path, so it answered with its default backend.
HTTP 407 Proxy Authentication Required
A proxy between you and the server requires credentials before it will forward your request.
cURL error 6: Could not resolve host: api.example.com
PHP cURL couldn’t resolve the hostname via DNS.
HTTP 511 Network Authentication Required
A captive portal (hotel, airport, office Wi-Fi) is intercepting your traffic until you log in or accept its terms.
Map another error
Popular: 500403400ORA-009331064Critical errorFileNotFoundException assemblyTypeError