Web & HTTP errors
- 403 Forbidden nginxnginx refused to serve the request. Usually there is no index file and autoindex is off, nginx's worker user cannot read the files or traverse a parent directory, SELinux blocks access, or a deny/allow rule matches.
- 413 Request Entity Too Large (nginx)The upload is bigger than nginx allows (1 MB by default). Raise client_max_body_size, and the limit in your app or PHP too.
- 502 Bad Gateway (nginx)nginx couldn't get a valid response from the app behind it. The app is down, listening on a different address/port, or crashed. The nginx error log tells you which.
- 504 Gateway TimeoutA proxy or load balancer (nginx, Cloudflare, AWS ALB) forwarded the request to your app but didn't get a response in time. The app is slow, stuck, or unreachable from the proxy.
- curl: (60) SSL certificate problem: unable to get local issuer certificatecurl couldn't build a trusted chain from the server's certificate to a CA in its CA bundle. Either the bundle is missing/outdated, the server doesn't send its intermediate certificate, or a corporate proxy or self-signed cert is in the way.
- ERR_SSL_PROTOCOL_ERRORThe browser started a TLS handshake but the server answered with something that isn't valid TLS, or the handshake failed. Most often you're using https:// against a port that only speaks plain HTTP.
- ERR_TOO_MANY_REDIRECTSThe browser followed a redirect loop (A → B → A …). Usually an HTTP↔HTTPS loop behind Cloudflare or a load balancer, a www/non-www rule conflict, or an app that keeps redirecting to login.
- has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resourceThe browser blocked a cross-origin request because the server didn't allow your origin. Fix it on the server (add CORS headers) or proxy the request through your own backend.
- Mixed Content: The page was loaded over HTTPS, but requested an insecure resource. This request has been blocked.An HTTPS page tried to load a script, stylesheet, iframe, fetch/XHR call or other resource over plain HTTP, and the browser blocked it. Load every resource over HTTPS, usually by fixing hard-coded http:// URLs or a backend that generates them behind a TLS proxy.
- NET::ERR_CERT_AUTHORITY_INVALIDThe browser doesn't trust the certificate authority that signed the site's TLS certificate. Usually it's a self-signed or local development certificate, a server missing its intermediate certificate, or a corporate proxy/antivirus intercepting HTTPS.
- nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)Another process (Apache, another nginx, a Docker container, a dev server) already listens on port 80 or 443, or nginx is already running and you started a second copy. Find the owner of the port and stop it or move it.
- x509: certificate signed by unknown authorityA Go program (docker, kubectl, terraform, helm, gh, your own service) couldn't verify the server's TLS certificate because the CA that issued it isn't in its trust store. Typical with corporate proxies, self-signed certs, private registries and minimal containers.