Diese Anleitung dokumentiert den realen Cloudflare Error 521 Web Server Is Down beim Veröffentlichen von Portainer unter portainer.ekasunucu.com auf einem Ubuntu-24.04-VPS. Portainer war auf 127.0.0.1:9443 gesund, aber die öffentliche Origin-443-/Reverse-Proxy-Schicht fehlte noch. Mit Nginx, lokalem Origin-Test und Let's Encrypt wurde die HTTPS-Kette vervollständigt. Der spätere Certbot-core24-Timeout wird als separates Problem dokumentiert.
Visitor
↓
Cloudflare
↓ HTTPS :443
Nginx Origin
↓
https://127.0.0.1:9443
↓
Portainer
Vorher: kein :443 → 521
Danach: Nginx + TLS → HTTPS 200Laut aktueller Cloudflare-Dokumentation entsteht 521, wenn der Origin-Webserver Verbindungen von Cloudflare ablehnt. Häufige Ursachen sind ein nicht laufender Origin-Webserver oder blockierte Cloudflare-Anfragen.
Bei Full oder Full (strict) verbindet Cloudflare den Origin per HTTPS. Der Origin muss deshalb aktiv HTTPS anbieten. In unserem realen Portainer-Fall lief das Backend auf 9443, aber die öffentliche Reverse-Proxy-/443-Schicht war noch nicht bereit.
Cloudflare Edge → Origin :443 → connection refused → 521Ist Portainer selbst down, zuerst den Container reparieren. Liefert localhost 9443 während 521 jedoch HTTP 200, ist das Backend gesund und das Problem liegt höher: Nginx, TLS, Firewall oder Cloudflare-Origin-Pfad.
Diese Trennung verhindert den unsicheren Workaround, Port 9443 öffentlich zu öffnen. Wir ließen 9443 lokal und ergänzten Nginx.
docker ps --filter name='^/portainer$'curl -k -I https://127.0.0.1:9443Vor tieferer 521-Analyse prüfen, ob der Hostname auf den gewünschten Origin auflöst. Ein falscher A/AAAA-Record führt zu Port- und Firewall-Prüfungen auf dem falschen Server.
Wir prüften portainer.ekasunucu.com über Cloudflare- und Google-DNS. DNS-only kann während der Diagnose direkten Origin-Zugriff vereinfachen, ist aber kein allgemeines Muss für Zertifikate.
dig +short A portainer.ekasunucu.com @1.1.1.1dig +short A portainer.ekasunucu.com @8.8.8.8Cloudflare weist bei 521 darauf hin, dass bei Full/Full (strict) die Origin-Anwendung aktiv auf dem benötigten HTTPS-Port lauschen muss. Für normales HTTPS ist das Port 443.
Portainer selbst lief nur lokal auf 9443. Cloudflare kann dieses private Backend nicht direkt verwenden; es brauchte einen öffentlichen Origin-Webserver auf 443.
ss -lntp | grep -E ':443|:9443'Statt Port 9443 öffentlich zu machen, wurde Nginx als Origin-Webserver eingesetzt. portainer.ekasunucu.com wird an https://127.0.0.1:9443 weitergeleitet.
Da Portainer lokal ein selbstsigniertes Zertifikat nutzt, gilt proxy_ssl_verify off nur für diesen localhost-Hop. Öffentliches Origin-TLS wird mit Let's Encrypt in Nginx terminiert.
apt-get update && apt-get install -y nginxproxy_pass https://127.0.0.1:9443;proxy_ssl_verify off;Für die Portainer-Weboberfläche sollten Proxy- und WebSocket-Upgrade-Header erhalten bleiben. Wir leiteten HTTP/1.1, Upgrade, Connection, Host und X-Forwarded weiter.
Das ist von der grundlegenden 521-Verbindungsablehnung getrennt. Verschwindet 521, aber Live-Verbindungen funktionieren nicht, Proxy-Header prüfen.
proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;Lokale Origin-Tests vor erneuter Cloudflare-Aktivierung verkürzen die Fehlersuche. nginx -t, Service-Status und ein Host-Header-Request prüfen getrennte Ebenen.
Nach Einrichtung unseres Reverse Proxys lieferte der lokale Nginx-Request 200. Damit funktionierten Portainer-Backend und Nginx unabhängig von Cloudflare.
nginx -tsystemctl is-active nginxcurl -sS -o /dev/null -w '%{http_code}\n' -H 'Host: portainer.ekasunucu.com' http://127.0.0.1/Während der Let's-Encrypt-Phase lief der reale Certbot-snap-Download von core24 in einen TCP-Timeout. Das war kein Fortsetzen des 521-Problems, sondern ein separates ausgehendes Netzwerkproblem zum Snap-CDN.
Nach Erholung der Netzwerkverbindung funktionierte der erneute Certbot-Versuch. Mehrere Fehler nicht ohne Beweis derselben Ursache zuordnen.
snap install certbot --classicsnap changesjournalctl -u snapd --no-pager -n 100Nach funktionierendem Nginx-HTTP-vHost holte Certbot --nginx das Zertifikat für portainer.ekasunucu.com. Danach konnte der Origin auf 443 ein gültiges Zertifikat ausliefern.
Damit sind die Kernvoraussetzungen für zertifikatsvalidierende Cloudflare-Modi erfüllt: HTTPS auf 443, nicht abgelaufenes Zertifikat und Hostname-Match.
certbot --nginx -d portainer.ekasunucu.comcurl -I https://portainer.ekasunucu.comcertbot renew --dry-runCloudflare empfiehlt aktuell Full (strict), wenn möglich. Dabei wird Edge-to-Origin verschlüsselt und das Origin-Zertifikat auf Gültigkeit und Hostname geprüft.
Ein öffentlich vertrauenswürdiges Zertifikat wie Let's Encrypt kann diese Anforderungen erfüllen. Vor Full (strict) Origin-443 und Zertifikatkette testen, sonst können andere SSL-Fehler entstehen.
Visitor HTTPS → Cloudflare → HTTPS + certificate validation → Nginx origin :443Unser Fall war der fehlende Origin-Reverse-Proxy, aber Cloudflare nennt blockierte Cloudflare-Anfragen ebenfalls als häufige 521-Ursache. Firewalls, Rate Limits oder Security-Software können legitime Cloudflare-Verbindungen ablehnen.
Ist Nginx auf 443 gesund und direkte Origin-Tests funktionieren, aber 521 bleibt, Firewall, fail2ban, CSF/LFD, Rate Limits oder Provider-Sicherheitslayer prüfen. Offizielle aktuelle Cloudflare-IP-Ranges verwenden.
tail -n 100 /var/log/nginx/error.logjournalctl -u nginx --no-pager -n 100iptables -Snft list ruleset521 bedeutet, dass der Origin die Cloudflare-Verbindung ablehnt. 522 ist ein Verbindungs-Timeout. 525 bedeutet SSL-Handshake-Fehler, 526 ein ungültiges Origin-Zertifikat bei Zertifikatsvalidierung.
Damit ändert sich die Diagnose: Webserver/Listener/Firewall bei 521, Erreichbarkeit/Timeout bei 522 und TLS/Zertifikatskette bei 525/526.
521 → connection refused / origin down522 → origin connection timeout525 → SSL handshake failed526 → invalid SSL certificateDie schnellste Methode trennt die Ebenen nacheinander: DNS, lokales Backend, Nginx-Konfiguration/Service, 443-Listener und zuletzt echte HTTPS-Domain.
521 nicht durch öffentliches Freigeben des Backend-Ports lösen. Stattdessen die korrekte Origin-Webserver-Schicht vervollständigen.
dig +short A portainer.ekasunucu.comcurl -k -I https://127.0.0.1:9443nginx -t && systemctl is-active nginxss -lntp | grep -E ':443|:9443'curl -I https://portainer.ekasunucu.comtail -n 100 /var/log/nginx/error.logCloudflare kann den Origin nicht verbinden, weil die Verbindung vom Origin abgelehnt wird.
Cloudflare nennt einen offline Origin-Webserver und blockierte Cloudflare-Anfragen als häufige Ursachen.
Das Backend kann auf localhost 9443 gesund sein, während der öffentliche Origin-Webserver auf 443 fehlt oder Verbindungen ablehnt.
Für normales HTTPS muss der Origin-Webserver Port 443 aktiv akzeptieren.
Nein. 9443 blieb lokal und Nginx veröffentlichte den Dienst.
https://127.0.0.1:9443.
Nur für das lokale selbstsignierte Portainer-Upstream; öffentliches Origin-TLS wurde mit Let's Encrypt in Nginx terminiert.
Nein. Es kann Diagnose und direkten Origin-Test vereinfachen, ist aber kein allgemeines Zertifikats-Muss.
Nein. Das war ein separates ausgehendes TCP-Timeout zum Snap-CDN.
Wenn der Origin per HTTPS ein gültiges, nicht abgelaufenes und zum Hostnamen passendes Zertifikat liefert.
521 ist eine abgelehnte Origin-Verbindung, 522 ein Timeout beim Kontakt zum Origin.
521 ist Verbindungsablehnung; 526 ein ungültiges Origin-Zertifikat bei Zertifikatsvalidierung.
Firewalls, fail2ban/CSF, Rate Limits und Regeln gegen Cloudflare-IP-Ranges prüfen.
DNS, localhost-Backend, Nginx-Konfiguration/Service, 443-Listener, Origin-HTTPS und Logs prüfen.
Portainer, n8n, Open WebUI und weitere Self-Hosted-Dienste hinter Nginx, TLS und Cloudflare auf EKA-Sunucu-Linux-VPS betreiben.
Aktualisiert: 10.08.2026