Naar hoofdinhoud springen

Handleidingen / Oplossen: handleidingen voor veelvoorkomende foutmeldingen

Cloudflare Error 520: wat het betekent en hoe u het oplost

Cloudflare error 520 betekent dat Cloudflare verbinding maakte met uw origin-server maar een antwoord terugkreeg dat leeg, onherkenbaar of anderszins te kapot was om aan de bezoeker door te geven. Cloudflare gebruikt foutcode 520 als vangnet: er kwam iets terug van de origin, maar niet iets dat past binnen de regels van een normaal HTTP-antwoord.

Wat error 520 betekent

Cloudflare zit als reverse proxy tussen de bezoeker en uw webserver. Bij een normaal verzoek opent Cloudflare een TCP-verbinding met uw origin, stuurt het verzoek, en geeft door wat er als HTTP-antwoord terugkomt. Error 520 treedt op wanneer die laatste stap mislukt: de TCP-verbinding lukt wel, maar de bytes die volgen parseren niet als een geldig HTTP-antwoord, of er komen helemaal geen bytes binnen voordat de verbinding sluit.

Dat plaatst 520 in een andere categorie dan Cloudflare's andere 5xx-codes. Error 521 betekent dat de origin de verbinding ronduit weigerde. Error 522 betekent dat de verbindingspoging een timeout kreeg. Error 520 betekent dat de origin wel iets zei, en Cloudflare er geen wijs uit kon worden of het niet kon doorgeven.

Hoe error 520 verschijnt

In een browser toont Cloudflare zijn eigen foutpagina, "Error 520: web server returned an unknown error", samen met een Ray ID die u nodig heeft als u contact opneemt met de support van Cloudflare. Een gewoon curl-verzoek naar het domein toont dezelfde statuscode:

curl -I https://example.com
HTTP/2 520

Aan de kant van Cloudflare tonen de tabbladen Security of Analytics in het dashboard een piek in 5xx-antwoorden, en Enterprise-accounts met toegang tot Logpull of Logpush kunnen de specifieke edge-colo en de Ray ID per mislukt verzoek opvragen. Niets daarvan vertelt u echter wat de origin werkelijk verstuurde, dus de volgende plek om te kijken is uw eigen server.

Controleer op de origin de logs van de webserver en de applicatie op hetzelfde tijdstip als de storingen. Zoek naar een herstart van een proces, een segmentation fault, een out-of-memory kill in het systeemlog (dmesg of journalctl -k), of een applicatiefout die het verzoek halverwege het antwoord deed crashen. Staat er in de applicatielogs helemaal niets ongewoons, dan is het probleem eerder een antwoord dat technisch compleet was maar een HTTP-regel schond, zoals een te grote header.

Wat error 520 veroorzaakt

  • Het origin-proces crashte of herstartte tijdens het afhandelen van het verzoek. De verbinding sluit voordat er een compleet antwoord is verstuurd. Dit is de meest voorkomende oorzaak.
  • De origin resette de TCP-verbinding (RST) in plaats van hem netjes te sluiten. Applicatieservers onder geheugendruk of die tegen een workertimeout aanlopen doen dit vaak.
  • Antwoordheaders boven de limiet van 16 KB van Cloudflare. Een grote set-cookie-header, een stapel debugheaders, of uitgebreide CORS-headers kunnen het totaal boven wat Cloudflare accepteert duwen.
  • Een cookie of gecombineerde cookieheader die te groot is. Sessiedata, trackingcookies, of een verkeerd geconfigureerde cookiejar kunnen na verloop van tijd boven de limieten van browser en proxy groeien.
  • Een ontbrekende of misvormde statusregel. Sommige frameworks geven een ruwe foutstring terug in plaats van een echt HTTP-antwoord wanneer een onafgehandelde uitzondering de webserverlaag bereikt.
  • De origin gaf niet-HTTP-data terug op de HTTP(S)-poort. Dit gebeurt na een verkeerd geconfigureerde reverse proxy, een verkeerde poortmapping, of een dienst die de poort claimt voordat de echte webserver dat doet.
  • Een beveiligingsapparaat of WAF voor de origin verbrak de verbinding halverwege het antwoord. Sommige on-premise WAF's en loadbalancers beëindigen verbindingen die een regel doen afgaan, wat er vanuit Cloudflare identiek uitziet aan een crash.

Hoe u vaststelt wiens fout het is

Omdat Cloudflare wel degelijk een antwoord van de origin kreeg, is error 520 een sterk signaal dat het probleem bij de origin ligt en niet in het netwerk van Cloudflare, anders dan bij error 521 of 522 waar de verbinding zelf al mislukte. De open vraag is meestal of het elke bezoeker raakt of maar een deel.

De snelste manier om dat uit te zoeken is een HTTP-controle vanaf meerdere locaties tegelijk uit te voeren. Faalt een controle op het publieke domein vanaf elke locatie op hetzelfde moment dat gebruikers de fout melden, dan is de origin zelf down of crashend voor iedereen, niet alleen voor één edge-datacenter. Faalt hij alleen af en toe of vanuit specifieke regio's, dan is de origin mogelijk overbelast onder de belasting vanuit die regio, of speelt een cache- of loadbalancinglaag die alleen in een deel van uw opzet aanwezig is een rol. De HTTP-controle van HostTracker draait vanaf meetpunten in meerdere landen en rapporteert het resultaat van elk apart, wat het detail is dat één curl-aanroep vanaf uw eigen bureau u niet kan geven.

U kunt de origin ook volledig los van Cloudflare isoleren door hem rechtstreeks te benaderen met de Host-header van het domein, waarbij u het edge-netwerk omzeilt zodat elke fout die u ziet onbetwistbaar van de origin is:

curl -v -H "Host: example.com" https://ORIGIN_IP/

Vervang ORIGIN_IP door het werkelijke IP-adres van uw server. Faalt ook dit directe verzoek, of geeft het hetzelfde kapotte antwoord terug, dan is de fout bij de origin bevestigd.

Hoe u error 520 oplost

Bent u de bezoeker

  1. Laad de pagina na een minuut of twee opnieuw. Veel 520-fouten komen van een korte crash of herstart waar de procesbeheerder van de site zelf automatisch van herstelt.
  2. Probeer een privévenster, of een ander netwerk. Dit sluit een verouderde lokale cache of een storende browserextensie uit, al wordt een 520 zelden veroorzaakt door iets aan uw kant.
  3. Controleer of de site een eigen statuspagina publiceert, als die er is, voor een bekende storing.
  4. Er valt aan uw kant niets in te stellen om een 520 op te lossen. Hij wordt gegenereerd door de eigen server van de site, niet door uw browser, uw provider, of uw DNS-resolver.

Beheert u de site

  1. Controleer de logs van de webserver en de applicatie op de origin op het exacte tijdstip van de storingen, op zoek naar een crash, een onafgehandelde uitzondering, of een workerherstart.
  2. Omzeil Cloudflare en bevraag de origin rechtstreeks met de Host-header (hierboven getoond), of gebruik de optie "Pause Cloudflare on Site" van Cloudflare, om te bevestigen dat het antwoord kapot is los van de proxy.
  3. Meet de grootte van uw antwoordheaders en cookies. Eén grote set-cookie-header of een stapel debugheaders die in productie aan zijn blijven staan kan het totaal boven 16 KB duwen; snoei wat u niet nodig heeft en verplaats grote sessiedata naar de serverkant.
  4. Controleer op misvormde antwoorden: een reverse proxy of loadbalancer die naar de verkeerde upstream wijst, een app die platte tekst teruggeeft op een HTTP-poort, of een ontbrekende statusregel van de standaard foutafhandeling van een framework.
  5. Controleer op uitputting van resources op de origin: geheugenlimieten, limieten voor de connection pool, of een procesbeheerder (systemd, pm2, een Gunicorn- of uWSGI-workerpool) die vastzit in een herstartlus.
  6. Staat er een WAF, antivirusproxy, of loadbalancer tussen het internet en uw applicatieserver, controleer dan de eigen logs daarvan op verbindingen die rond hetzelfde moment werden verbroken of gereset.

Hoe u het voorkomt

Error 520 komt meestal eerst binnen als een supportticket, niet als een melding, omdat op de origin niets per se een mislukte handshake met de edge van Cloudflare logt zoals het een applicatie-uitzondering wel zou loggen. Een externe beschikbaarheidscontrole die van buiten uw eigen netwerk draait vangt dezelfde storing op die een bezoeker ziet, vanuit hetzelfde standpunt, voordat iemand het moet melden. De controle vanuit meerdere landen laten draaien toont ook meteen of een 520 wereldwijd is of beperkt tot één regio, wat het detail is dat bepaalt waar u begint met debuggen.

Gerelateerde fouten

Veelgestelde vragen

Is error 520 de fout van Cloudflare of van mij?

Bijna altijd die van de origin. Cloudflare ontving een antwoord en kon er geen wijs uit worden of het niet doorgeven, wat betekent dat de origin-server, niet het netwerk van Cloudflare, het kapotte antwoord produceerde.

Betekent error 520 dat mijn hele site plat ligt?

Niet per se. Het betekent dat het specifieke verzoek dat de fout veroorzaakte mislukte. Crasht de origin onder belasting, dan kan hij 520 serveren aan sommige verzoeken en normale antwoorden aan andere, totdat het onderliggende probleem is opgelost.

Kan ik error 520 alleen vanuit het Cloudflare-dashboard oplossen?

Zelden. Omdat de oorzaak bijna altijd bij de origin ligt, lossen dashboardinstellingen geen crashende applicatie of te grote antwoordheader op. De uitzondering is verifiëren dat uw SSL/TLS-modus en origin-instellingen overeenkomen met wat uw server daadwerkelijk doet, wat op zijn minst een verkeerde configuratie aan de kant van Cloudflare uitsluit.

Wat is het verschil tussen error 520 en een gewone 502 Bad Gateway?

502 is de algemene HTTP-status voor een ongeldig antwoord van een upstream-server, gebruikt door elke reverse proxy. Cloudflare gebruikt 520 specifiek als eigen vangnet voor een antwoord dat zo kapot is dat het bij geen van Cloudflare's andere benoemde 5xx-codes past, en dat is waarom de foutpagina en de Ray ID van Cloudflare verschijnen in plaats van een generieke 502-pagina.

Kan een grote cookie echt een 520 veroorzaken?

Ja. Cloudflare handhaaft een limiet op de totale grootte van antwoordheaders, momenteel rond de 16 KB, en cookies tellen daarin mee. Een applicatie die maar blijft toevoegen aan een sessiecookie, of die meerdere grote cookies tegelijk instelt, kan die limiet overschrijden en een 520 veroorzaken, zelfs als de applicatie zelf geen bug heeft.

Lost opnieuw proberen het op?

Soms, als de oorzaak een tijdelijke crash of herstart bij de origin was waarvan die zich al heeft hersteld. Stuurt de origin consequent kapotte antwoorden, bijvoorbeeld vanwege een te grote header bij elk verzoek, dan helpt opnieuw proberen niet totdat de origin is gerepareerd.

Nu controleren

Voer de gratis check uit op je eigen site, zonder account.

HTTP check

Dit permanent monitoren

Ontvang een melding zodra er iets misgaat: HostTracker controleert vanaf meer dan 300 locaties en waarschuwt je via e-mail, sms, Slack, Telegram en meer.

HostTracker-functies

Meer in dit onderdeel: Oplossen: handleidingen voor veelvoorkomende foutmeldingen