Cloudflare-fout 521 en 522: de origin-server antwoordt niet
· 5 min leestijd
Wat deze fouten betekenen
Loopt een site via Cloudflare, dan praten bezoekers met Cloudflare en praat Cloudflare met jouw server, de zogeheten “origin-server”. De codes 521 en 522 zijn eigen aan Cloudflare en zeggen hetzelfde: Cloudflare werkt, jouw server antwoordt niet.
- 521 Web server is down: Cloudflare heeft je server bereikt, maar die weigerde de verbinding op poort 443 of 80. Daar luistert niemand, of een firewall wijst hem af.
- 522 Connection timed out: Cloudflare kreeg geen antwoord op de verbindingspoging: server uit of vol, of een firewall die pakketten zonder bericht weggooit.
Een 521 is dus een ERR_CONNECTION_REFUSED gezien door Cloudflare in plaats van door de browser; een 522 is een verbindingstime-out. Geen van beide is een storing bij Cloudflare, en de proxy uitzetten lost niets op: zonder Cloudflare zouden bezoekers de geweigerde verbinding rechtstreeks zien. Verwar het niet met een 502 Bad Gateway, waarbij de webserver antwoordt maar de applicatie erachter stilstaat, en ook niet met ERR_TOO_MANY_REDIRECTS, de doorverwijzingslus die vaak uit de SSL-modus “Flexible” voortkomt. Weet je nog niet wat er mis is? Begin bij website down.
Veelvoorkomende oorzaken
- De webserver is gestopt. nginx of Apache is gecrasht of na een wijziging niet meer gestart. Resultaat: 521.
- De firewall blokkeert de adressen van Cloudflare. Cloudflare maakt verbinding vanaf eigen IP-reeksen. Een strenge firewall, of een tool tegen aanvallen die Cloudflare na een reeks verzoeken heeft geblokkeerd, geeft 521 (reject) of 522 (drop).
- De server staat uit of is onbereikbaar. Storing, herstart, gepland werk van de hostingprovider, netwerkinterface uit: 522.
- Overbelasting. De server accepteert verbindingen te traag: 522 met tussenpozen, vooral bij veel verkeer.
- Verkeerde poort of SSL-modus. In de modus “Full” of “Full (strict)” maakt Cloudflare verbinding op 443; luistert de server alleen op 80, dan geeft dat 521. In “Flexible” maakt Cloudflare verbinding op 80.
- Het DNS-record bij Cloudflare wijst naar een oud IP-adres. Na een serververhuizing staat de oude machine uit: 522.
Als je bezoeker bent
Je kunt niets doen: Cloudflare toont de foutpagina voor een site waarvan de server niet antwoordt. Probeer het later opnieuw.
Als het je eigen site is: eerst controleren
Open de Website down checker: die toont de code 521 of 522 van buitenaf. Ga daarna om Cloudflare heen en praat rechtstreeks met de server via zijn IP-adres met de header Host:
# antwoordt de origin-server rechtstreeks?
curl -sI https://203.0.113.10/ -H 'Host: example.com' -k --max-time 10
curl -sI http://203.0.113.10/ -H 'Host: example.com' --max-time 10
# op de server: het echte IP-adres, te vergelijken met DNS
hostname -I
Antwoordt curl, dan is de server in orde en zit de blokkade op de route Cloudflare → server (firewall, IP-adres, poort). Mislukt ook dat, ga dan via SSH naar binnen:
systemctl status nginx
systemctl status apache2
sudo ss -tlnp | grep -E ':80 |:443 '
sudo ufw status verbose
sudo fail2ban-client status
uptime
Oplossingen op je eigen server
1. De webserver herstarten
sudo nginx -t && sudo systemctl restart nginx
sudo apachectl configtest && sudo systemctl restart apache2
sudo journalctl -u nginx -n 50
Start hij niet, dan zegt het log waarom: syntaxfout, certificaat dat niet bestaat, bezette poort, volle schijf (df -h).
2. De IP-reeksen van Cloudflare toestaan
Cloudflare publiceert zijn eigen adresreeksen. Je firewall moet die toelaten op 80 en 443:
# ufw: één regel per reeks
for ip in $(curl -s https://www.cloudflare.com/ips-v4) $(curl -s https://www.cloudflare.com/ips-v6); do
sudo ufw allow from "$ip" to any port 80,443 proto tcp
done
Heeft fail2ban een adres van Cloudflare geblokkeerd, hef de blokkade dan op en laat het het echte IP-adres van de bezoeker lezen (header CF-Connecting-IP). Controleer ook de security group van je cloudprovider.
3. Poort en SSL-modus op elkaar afstemmen
Bij Cloudflare, onderdeel SSL/TLS: met “Full (strict)” moet je server op 443 een geldig certificaat voor het domein tonen (Let’s Encrypt met certbot, of een origin-certificaat van Cloudflare). Met “Full” volstaat een zelfondertekend certificaat. Met “Flexible” moet de server op 80 in HTTP antwoorden zonder door te verwijzen. De veiligste keuze: 80 en 443 met een geldig certificaat en “Full (strict)”.
sudo ss -tlnp | grep ':443 '
echo | openssl s_client -connect 203.0.113.10:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject
4. Overbelasting
Toont uptime een hoge belasting en komen en gaan de 522’s, zoek dan wat de server bezighoudt: top, volle PHP-FPM-workers (server reached pm.max_children in het log), een trage query, bots. Verhoog de workers als het geheugen het toelaat en laat Cloudflare de statische bestanden leveren.
5. Het DNS-record bij Cloudflare corrigeren
In het Cloudflare-paneel, tabblad DNS: het A-record (en AAAA-record) van example.com en van www moet naar het huidige IP-adres van de server wijzen. Verwijder een AAAA-record met een IPv6-adres dat de server niet meer heeft.
Ligt het bij je hostingprovider?
Op shared hosting kun je de webserver niet herstarten en de firewall niet openzetten. Stuur dit:
Goedemiddag, mijn website example.com loopt via Cloudflare en geeft sinds ongeveer 15:00 (UTC) “Error 522” (time-out van de verbinding naar de origin-server). Het DNS-record wijst naar 203.0.113.10, het IP-adres van mijn hosting. Ik heb zelf niets gewijzigd. Is de webserver van die machine gestopt, of blokkeert de firewall de IP-reeksen van Cloudflare?
Zo gebeurt het niet opnieuw
Achter Cloudflare blijft een gestopte server onopgemerkt tot de foutpagina verschijnt. Een controle van buitenaf ziet de 521 of 522 zodra hij opduikt; op je eigen server waarschuwt de serveragent je wanneer nginx stopt, de belasting stijgt of de schijf volloopt.
Down? Wij fixen het. Op je eigen server of op shared hosting met SSH-toegang herstart de Quick Fix, de automatische reparatie tegen een vaste prijs, de gestopte dienst als de configuratietest slaagt, 24 uur per dag, ook in het weekend; de Deep Fix neemt de firewall, de SSL-modus of de overbelasting voor zijn rekening, per blok van 15 minuten; de schatting is de bovengrens.
En nu
Controleer het van buitenaf
Is de site voor iedereen down of alleen bij jou, en wat antwoordt de server? Gratis, zonder account.
Website down checkerDown? Wij fixen het.
Op je eigen server of op shared hosting met SSH-toegang: Quick Fix tegen een vaste prijs voor de meest voorkomende oorzaken, Deep Fix gefactureerd per blok van 15 minuten voor al het andere, 24/7. Prijs zichtbaar vóór je bestelt.
Reparatie bestellenMeer uit de kennisbank
- Website down: wat je doet in de eerste 15 minuten
- Server down of niet bereikbaar: wat je controleert en in welke volgorde
- 500 Internal Server Error: de oorzaak vinden in de logs en de site weer online krijgen
- 502 Bad Gateway: de oorzaak vinden en oplossen
- 503 Service Unavailable: overbelasting, onderhoud of een limiet van de hosting?
- 504 Gateway Timeout: vinden wat de site vertraagt
- DNS_PROBE_FINISHED_NXDOMAIN: het domein antwoordt niet meer
- ERR_CONNECTION_REFUSED: de server weigert de verbinding
- ERR_CONNECTION_TIMED_OUT: de server antwoordt niet op tijd
- Wat “Je verbinding is niet privé” betekent en hoe je het oplost
- ERR_SSL_PROTOCOL_ERROR: de veilige verbinding mislukt nog vóór het certificaat
- ERR_TOO_MANY_REDIRECTS: de doorverwijzingslus vinden en doorbreken
- 403 Forbidden: wat de toegang tot je site blokkeert
- ERR_CONNECTION_RESET: waarom de verbinding halverwege wegvalt
- 429 Too Many Requests: welke limiet je bezoekers tegenhoudt