Error map
ModSecurity: Access denied with code 403 Nginx/Apache: ModSecurity: Access denied with code 403 (phase 2). Matched "Operator GE matched 5 at TX:anomaly_score"
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 403 Forbidden
The server understood the request but refuses to authorize it — you (or the server process) are not allowed to access this resour…
Nginx: nginx: [emerg] unknown directive "x" in /etc/nginx/sites-enabled/x:12 — configuration file test failed
Nginx found a directive it doesn’t know — a typo, a missing semicolon on the previous line, a directive from a module that isn’t…
Cloudflare Error 1020: Access Denied
A Cloudflare firewall/WAF custom rule blocked the request — the visitor’s IP, country, user agent or request pattern matched a bl…
API/app requests get 403 with cf-mitigated: challenge (Bot Fight Mode / challenge on non-browser clients)
Cloudflare is answering API calls, webhooks or mobile-app requests with a challenge page (HTML 403) because bot protection treats…
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: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
Nginx (or another server) can’t listen on the port because another process already holds it — often Apache, another Nginx, or a s…
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.
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.
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.
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).
Browser: Welcome to nginx! If you see this page, the nginx web server is successfully installed and working
Requests are served by the default server block, not your site's block.
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.
Two steps away (36)
Git: Permission denied (publickey). fatal: Could not read from remote repository.
SSH authentication to GitHub/GitLab/Bitbucket failed — no key, wrong key, or the key isn’t added to your account.
AWS S3: AccessDenied (403) when calling GetObject / PutObject
An IAM policy, bucket policy, ACL/ownership setting, Block Public Access or KMS key policy denied the S3 request.
Linux: Permission denied
Your user (or the service user) lacks read/write/execute permission on a file, directory or one of its parents.
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 429 Too Many Requests
You’ve hit a rate limit — too many requests in a given time window. Slow down and retry later.
Cloudflare Error 520: Web Server Returned an Unknown Error
Cloudflare connected to your origin, but the origin returned an empty, unknown or invalid response.
driver failed programming external connectivity on endpoint: iptables: No chain/target/match by that name
Docker’s iptables rules were wiped (firewalld/ufw reload, iptables flush) while Docker was running, so it can’t publish ports.
SyntaxError: Unexpected token < in JSON at position 0
`JSON.parse()` / `response.json()` received something that isn’t JSON — very often an HTML error page.
HTTP 418 I'm a teapot
An April Fools’ status from RFC 2324 — some sites and WAFs return it on purpose to tell bots or scrapers to go away.
Nginx 444 No Response (connection closed without response)
An Nginx-specific code: the server deliberately closed the connection without sending anything — a rule is dropping the request.
MySQL ERROR 2006 (HY000): MySQL server has gone away
The connection to MySQL was closed — usually by a timeout or a packet larger than `max_allowed_packet`.
HTTP 408 Request Timeout
The server closed the connection because the client took too long to send the complete 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.
Error: listen EADDRINUSE: address already in use :::3000
Another process is already listening on that port.
Docker: Bind for 0.0.0.0:80 failed: port is already allocated
Another container or host process already publishes that host port.
Web server failed to start. Port 8080 was already in use.
Spring Boot couldn’t bind its embedded server port because another process uses it.
Kubernetes: CreateContainerConfigError — secret / configmap not found
Kubernetes can’t build the container’s configuration — usually a referenced Secret, ConfigMap or key doesn’t exist in that namesp…
hint: You have divergent branches and need to specify how to reconcile them.
Git 2.27+ asks you to choose merge, rebase or fast-forward-only when local and remote both have new commits.
Author identity unknown *** Please tell me who you are.
Git doesn’t know your name and email for commits.
cURL error 6: Could not resolve host: api.example.com
PHP cURL couldn’t resolve the hostname via DNS.
sudo: unable to resolve host <hostname>: Name or service not known
The machine’s hostname isn’t in /etc/hosts (or DNS), so sudo prints this warning — usually after changing the hostname.
ping: google.com: Temporary failure in name resolution
The Linux host can’t resolve domain names — no working DNS server is configured or reachable.
FastCGI sent in stderr: "Primary script unknown"
Nginx passed a script path to PHP-FPM that PHP-FPM couldn’t find — usually a wrong SCRIPT_FILENAME or root.
PHP still runs old code after deploy (OPcache not reset)
OPcache keeps serving cached bytecode, so changes uploaded to the server don’t take effect.
Nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
Nginx isn't allowed to bind that port — a privileged port as non-root, or SELinux restricts it.
HTTP 500 Internal Server Error
The server hit an unexpected condition — usually an unhandled exception or misconfiguration in the application.
Nginx: [error] client intended to send too large body: 5242880 bytes (413 Request Entity Too Large)
A request body exceeded `client_max_body_size` (default 1 MB), so Nginx returned 413 before reaching your app.
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: nginx: [emerg] duplicate location "/" in /etc/nginx/sites-enabled/default:52
Two `location` blocks with the same match exist in one server block (often from two included files).
Nginx: nginx: [warn] conflicting server name "example.com" on 0.0.0.0:80, ignored
Two server blocks listen on the same port with the same `server_name`; the second is ignored.
Nginx: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 64
A very long `server_name` (or many names) doesn't fit the hash bucket.
HTTP 504 Gateway Timeout
A proxy or gateway waited too long for the upstream server to respond and gave up.
HTTP 499 Client Closed Request (Nginx)
Nginx-specific code logged when the client disconnected before the server finished responding.
Nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/ssl/server.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
The private key does not belong to the certificate configured in the server.
Map another error
Popular: 500403400ORA-009331064Critical errorFileNotFoundException assemblyTypeError