Cloudflare Error 520: Web server is returning an unknown error — Nedenleri ve Çözüm Yolları
“Sorunun kaynağını bulmanın yolu; katmanları tek tek açıp, her bir düğümü sabırla çözmektir.”
– Ersan Karavelioğlu
1) Hızlı Özet ve Doğru Yorumlama
520, Cloudflare’ın origin (kaynak) sunucunuzdan beklenmeyen/bozuk bir yanıt aldığında verdiği genel hatadır. 521/522 gibi net bağlantı hataları değildir; genellikle sunucu tarafı yazılım (Nginx/Apache/PHP-FPM), yanlış/eksik HTTP cevabı, bozuk header, origin firewall veya beklenmedik bağlantı kapanması gibi durumlarda ortaya çıkar.
Yanlış anlaşılmaması gerekenler:
- 521: Origin bağlantıyı reddediyor
- 522: Origin’e zaman aşımı
- 525/526: Origin SSL sorunları
- 520: Origin’den “anlamsız/bozuk/eksik” cevap
2) En Yaygın Nedenler (Teşhis İpuçlarıyla)
| Kategori | Tipik Sebep | Nasıl Anlarsınız? |
|---|---|---|
| Bozuk HTTP Cevabı | Origin’in headersız/eksik yanıt vermesi, yanlış Transfer-Encoding/chunked | curl -v ile origin’e direkt istekte header/cevap parçalarını kontrol ettiğinizde kopukluk görürsünüz |
| Header Aşımı | Çok büyük Cookie/Set-Cookie, upstream’in aşırı header üretmesi | Nginx’te upstream sent too big header hatası, büyük cookie’li kullanıcıda 520 |
| Bağlantı Kapanması | PHP-FPM işçi çökmesi, Connection reset by peer | error_log / php-fpm.log içinde segfault, kill, OOM izleri |
| Kaynak Yetersizliği | CPU/RAM spike, pm.max_children dolması | top/htop, php-fpm statüsü, 520’lerin yoğun trafikte artması |
| Origin Güvenlik Duvarı | Cloudflare IP’leri engellenmiş/limite takılmış | Firewall/Fail2Ban/ModSecurity loglarında CF IP’lerine karşı blok kayıtları |
| HTTP/2/Keep-Alive Sorunları | Proxy katmanı ile uyumsuz HTTP/2, yanlış keep-alive kapanması | curl --http2 ile denemede kopmalar; Nginx upstream/keepalive loglarında kapanma |
| Yanlış CDN Özelliği Etkileşimi | Rocket Loader/HTML minify, yanlış cache kuralı | Özellik kapatılınca 520 biter; belirli sayfalarda tekrarlar |
| Uygulama Hataları | PHP fatal, beklenmeyen exit; boş body | Uygulama logunda exception/fatal; origin doğrudan çağrıda 5xx/boş |
3) Teşhis: Adım Adım Kontrol Listesi
A. Ray ID ve iz sürme
- 520 sayfasındaki Ray ID’yi not alın.
- https://siteniz.com/cdn-cgi/trace ile Cloudflare tarafı temel akış bilgilerini görün.
B. Origin’i doğrudan test
3. Cloudflare’ı baypas ederek origin’e isteği sabit IP ile gönderin:
# 443 için (SSL varsa)
curl -I --resolve siteniz.com:443:ORIGIN_IP https://siteniz.com -k -v
# 80 için
curl -I --resolve siteniz.com:80:ORIGIN_IP http://siteniz.com -v
- Header’lar tam mı
Bozuk/chunked kırık mı
Boş mu
C. Log’lar
4. Nginx/Apache error log:
- Nginx: /var/log/nginx/error.log
- Plesk Nginx/Apache domain logları:
/var/www/vhosts/siteniz.com/logs/ altında error_log, proxy_error_log
- PHP-FPM: /var/log/php-fpm/error.log veya Plesk’te ilgili havuz logu.
- Firewall/Fail2Ban: Cloudflare IP aralıklarına karşı blok var mı

D. Konfigürasyon farklılaştırma
7. Rocket Loader, Auto-Minify, Early Hints, Mirage/Polish vb. optimizasyonları tek tek kapatıp dener misiniz
8. HTTP/2’yi geçici kapatıp HTTP/1.1 ile deneyin (origin veya CF tarafı).
9. WAF/Rate Limiting kurallarınızda yanlış eşleşme var mı
4) Çözüm: Hızlı Uygulanabilir Düzeltmeler
4.1 Nginx (Reverse Proxy) için sağlam varsayılanlar
pm = dynamic
pm.max_children = 30
pm.start_servers = 6
pm.min_spare_servers = 6
pm.max_spare_servers = 12
request_terminate_timeout = 120s
; Yoğun POST/işlemli sayfalarda zaman aşımı düşürmeyi değil, kodu optimize etmeyi tercih edin.
- OOM/segfault varsa RAM’i artırın ya da sorguları/işlemleri optimize edin.
- Hata veren sayfayı doğrudan (CF’siz) çağırınca 500/502/boş cevap alıyorsanız, sorun uygulamadadır.
4.3 Cloudflare tarafı ayarları
- Rocket Loader, Auto Minify, Email Obfuscation gibi özellikleri tek tek kapatıp tekrar deneyin.
- Caching: Hatalı Page Rule/Cache Rule’ları sadeleştirin.
- WAF/Rate Limiting: Geçici olarak devre dışı bırakıp 520 kayboluyor mu bakın; yanlış pozitif kuralı daraltın.
- SSL/TLS: Origin HTTPS doğruysa Full (Strict) kullanın; Flexible beklenmedik davranışlara yol açabilir.
4.4 Firewall/Fail2Ban/CSF
- Cloudflare IP aralıklarını (IPv4/IPv6) whitelist edin. (Tüm trafiğiniz CF’den geleceği için origin, ziyaretçi IP’sini değil CF IP’sini görür; CF-Connecting-IP başlığına güvenilecekse uygulama/proxy katmanını buna göre ayarlayın.)
- Sunucu üzerindeki rate limit/DoS modüllerinin CF POP’larını engellemediğinden emin olun.
4.5 Plesk özgü notlar (Nginx + Apache ikili yapı)
- Plesk’te AlanAdı > Apache & Nginx Ayarları bölümünde Proxy modu ve Ek Nginx direktifleri kısmına yukarıdaki proxy_* tamponlarını ekleyin.
- PHP desteği (FPM üzerinden Nginx/Apache) değiştirilip test edilebilir. Bazı senaryolarda FPM application served by Nginx daha stabil sonuç verir.
- Alan günlükleri: Domains > siteniz.com > Logs arayüzünden ilgili Ray ID zamanına denk gelen error kayıtlarını filtreleyin.
5) Gelişmiş Teşhis Komutları
# 1) CF’siz doğrudan origin testi (SNI/Host taklidi ile)
curl -I --resolve siteniz.com:443:ORIGIN_IP https://siteniz.com -k -v
# 2) HTTP/2 yerine HTTP/1.1 zorla (HTTP/2’den şüpheleniyorsanız)
curl -I --http1.1 --resolve siteniz.com:443:ORIGIN_IP https://siteniz.com -k -v
# 3) Büyük cookie ile test (header büyüklüğü etkisini görmek için)
curl -I --resolve siteniz.com:443:ORIGIN_IP https://siteniz.com -H "Cookie: test=$(head -c 8192 </dev/urandom | base64 | tr -d '\n' | cut -c1-4096)" -k -v
Ne arıyoruz
- Header’lar tam ve geçerli mi

- Yanıt boş kalıyor mu

- Bağlantı erken mi kapanıyor

- upstream sent too big header, recv() failed (104: Connection reset by peer) gibi hatalar var mı

6) Kalıcı Sağlamlaştırma Stratejileri
- Gözlemleme: Nginx/Apache, PHP-FPM, sistem kaynakları (CPU/RAM/IO) için sürekli izleme ve alarm.
- Sürüm/Yama: Nginx, OpenSSL, PHP-FPM ve framework’lerin güncel, bilinen hatalardan arınmış olması.
- Header Diyeti: Aşırı cookie, devasa header üreten eklentilerden kaçınmak.
- Graceful Degradation: Uygulamada beklenmeyen hata durumlarında mutlaka geçerli bir HTTP yanıtı üretmek (ör. 503 + küçük bir body).
- CF Kuralları: WAF/Rate Limiting özel eşleşmeleri dar, istisnaları net tutmak.
- Origin Güvenliği: CF IP’lerini whitelist, gereksiz port/servis kapalı, Fail2Ban doğru ayarlı.
7) Örnek “İlk Müdahale” Planı (15–20 dakika)
- Ray ID’yi alın, zamansal log eşleştirmesi yapın.
- curl --resolve ile origin’i CF’siz test edin; bozuk header/boş yanıt var mı bakın.
- Nginx/PHP-FPM loglarında eş zamanlı hata var mı kontrol edin.
- proxy_buffer_size ve proxy_buffers değerlerini yükseltin, Nginx reload.
- Cloudflare’da Rocket Loader/Minify vb. özellikleri kapatıp test edin.
- Firewall’da Cloudflare IP aralıklarını whitelist edin.
- Gerekirse HTTP/2’yi kapatıp HTTP/1.1 ile tekrar deneyin.
- Problemli sayfa modül/eklenti/tema bileşenlerini tek tek devre dışı bırakıp daraltın.
“Dayanıklı mimari, belirsiz durumlara net cevap üreten sistemlerle kurulur; hata aldığında bile anlaşılır konuşan bir sunucu, en büyük sigortandır.”
– Ersan Karavelioğlu
Son düzenleme: