Error map
AH00898: Error reading from remote server (502 Proxy Error) Apache: [proxy_http:error] AH01102: error reading status line from remote server 127.0.0.1:3000 / AH00898: Error reading from remote server returned by /api
Nginx / Apache · layer 3, Edge & web server
Centre: this error. First ring: errors it is linked with (12). 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 (12)
HTTP 407 Proxy Authentication Required
A proxy between you and the server requires credentials before it will forward your request.
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 417 Expectation Failed
The server or a proxy can’t meet the Expect header in the request — almost always Expect: 100-continue.
Apache: AH00558: apache2: Could not reliably determine the server's fully qualified domain name
A harmless startup warning: Apache has no global ServerName, so it guessed one from the host’s IP.
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.
Nginx: [error] upstream prematurely closed connection while reading response header from upstream
The backend ended the connection before sending a complete response header.
Apache: [proxy:error] AH00957: HTTP: attempt to connect to 127.0.0.1:3000 (127.0.0.1) failed / AH01114: HTTP: failed to make connection to backend: 127.0.0.1
mod_proxy couldn't connect to the backend address, so the client gets 503/502.
Apache: AH00091: apache2: could not open error log file /var/log/apache2/error.log. AH00015: Unable to open logs (Permission denied)
Apache can't open its log files — permissions, a missing directory or disk problems.
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] 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.
Apache: AH00526: Syntax error on line 12 of /etc/apache2/sites-enabled/site.conf: Invalid command 'Foo', perhaps misspelled or defined by a module not included in the server configuration
Apache's config has a syntax problem or a directive from a module that isn't loaded.
Apache: [core:error] AH00037: Symbolic link not allowed or link target not accessible: /var/www/html/current
Apache refuses to follow a symlink because `FollowSymLinks`/`SymLinksIfOwnerMatch` isn't allowed or the target isn't readable.
Two steps away (33)
Gradle: Could not resolve all files for configuration / Could not resolve dependency
Gradle couldn’t download a dependency — wrong coordinates/version, missing repository, offline mode, or network/proxy issues.
HTTP 401 Unauthorized
The request has no valid authentication credentials — you need to log in or send a valid token.
HTTP 403 Forbidden
The server understood the request but refuses to authorize it — you (or the server process) are not allowed to access this resour…
Error: connect ECONNREFUSED 127.0.0.1:5432
Nothing is listening at that host:port — the target service is down or you’re connecting to the wrong address.
HTTP 500 Internal Server Error
The server hit an unexpected condition — usually an unhandled exception or misconfiguration in the application.
HTTP 503 Service Unavailable
The server is temporarily unable to handle the request — overloaded, in maintenance, or has no healthy backends.
HTTP 400 Bad Request
The server could not understand the request because its syntax, headers or body are malformed or invalid.
HTTP 411 Length Required
The server refuses a request with a body but no Content-Length header.
HTTP 428 Precondition Required
The server requires a conditional request (If-Match / If-Unmodified-Since) to prevent lost updates, and you didn’t send one.
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.
OAuth Error: redirect_uri_mismatch
The redirect URI in your OAuth request doesn’t exactly match one registered for the client in the provider’s console.
WordPress: Error Establishing a Database Connection
WordPress can’t connect to its MySQL/MariaDB database with the credentials in wp-config.php, or the database server is down.
HTTP 408 Request Timeout
The server closed the connection because the client took too long to send the complete request.
SyntaxError: Unexpected token < in JSON at position 0
`JSON.parse()` / `response.json()` received something that isn’t JSON — very often an HTML error page.
TypeError: Failed to fetch / NetworkError when attempting to fetch resource
The browser couldn’t complete the request at the network level — CORS, DNS, offline, blocked mixed content, or the server refused…
Nginx: upstream timed out (110: Connection timed out) while reading response header from upstream
Nginx waited longer than proxy_read_timeout (60 s default) for the backend (app server, PHP-FPM) to respond, then returned 504.
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: 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 499 Client Closed Request (Nginx)
Nginx-specific code logged when the client disconnected before the server finished responding.
[nodemon] app crashed - waiting for file changes before starting...
Your app threw an error on startup; nodemon is waiting for a file change to retry.
Apache: AH02240: Server should be SSL-aware but has no certificate configured / SSLCertificateFile: file '/etc/ssl/x.crt' does not exist or is empty
Apache cannot find the certificate or key file named in its configuration, or `SSLEngine on` is set without any certificate.
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/Apache: ModSecurity: Access denied with code 403 (phase 2). Matched "Operator GE matched 5 at TX:anomaly_score"
The ModSecurity WAF (OWASP Core Rule Set) blocked the request as suspicious.
Nginx: [info] client prematurely closed connection while reading response header from upstream / access log status 499
The client (browser, mobile app, load balancer) disconnected before Nginx finished the response; Nginx logs status 499.
Nginx: [crit] connect() to unix:/run/php/php8.3-fpm.sock failed (13: Permission denied) while connecting to upstream
Nginx can't open the PHP-FPM (or app) Unix socket because of socket ownership/permissions or SELinux.
Browser: WebSocket connection to 'wss://example.com/socket' failed: Error during WebSocket handshake: Unexpected response code: 400 (nginx proxy)
Nginx isn't forwarding the `Upgrade`/`Connection` headers needed for WebSockets.
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.
PHP Parse error: syntax error, unexpected …
PHP can’t parse the file because of a syntax mistake — the real error is often on the line before the one reported.
Apache: [ssl:warn] AH01909: example.com:443:0 server certificate does NOT include an ID which matches the server name
Apache's SSL virtual host name does not match any name inside the certificate it loads.
Nginx: nginx: [emerg] unexpected end of file, expecting ";" or "}" in /etc/nginx/conf.d/site.conf:42
The config ends while a block or directive is still open — a missing `}` or `;`.
Too many levels of symbolic links (ELOOP)
A symlink points to itself, directly or through a chain, so path resolution loops.
Nginx: [error] directory index of "/var/www/html/" is forbidden (403 Forbidden)
A directory was requested but no index file exists (or index is wrong) and autoindex is off, so Nginx returns 403.
Nginx: [error] open() "/home/user/site/index.html" failed (13: Permission denied), 403 Forbidden
The nginx worker user can't read the requested file or traverse a parent directory.
Map another error
Popular: 500403400ORA-009331064Critical errorFileNotFoundException assemblyTypeError