Ulaşım
- Adres:2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0542 315 45 37 - eMail: info@alestaweb.com
Web sunucusu denilince akla genelde Nginx veya Apache gelir. Ama son yıllarda Caddy sessiz sedasız bir devrim yapıyor: tek satır yapılandırmayla otomatik HTTPS, sıfır cron job ile sertifika yenileme ve okunabilir bir konfigürasyon dili (readable config). Caddy 2.9 ile birlikte gelişmiş load balancing, daha hızlı reverse proxy ve geliştirilmiş HTTP/3 desteği geldi. Alesta Web ekibi olarak bu rehberde sıfırdan Caddy kurulumu, reverse proxy yapılandırması ve otomatik HTTPS aktivasyonunu adım adım anlatıyoruz.
Caddy, Go diliyle yazılmış modern bir web sunucusudur. Üç ayırt edici özelliği var:
Alesta Web ekibi olarak özellikle yeni başlayanlara veya hızlı prototipleme yapan ekiplere Caddy'yi öneriyoruz. Üretim ortamlarımızdan bazılarında Nginx yerine Caddy kullanıyoruz ve sertifika yenileme stresinden kurtulmak başlı başına büyük bir kazanım (huge win).
# Caddy resmi APT deposunu ekle
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \
| sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \
| sudo tee /etc/apt/sources.list.d/caddy-stable.list
# Paket listesini güncelle ve Caddy'yi kur
sudo apt update
sudo apt install -y caddy
# Versiyon kontrolü
caddy version
# Servis durumu
sudo systemctl status caddy
# macOS (Homebrew)
brew install caddy
# CentOS / RHEL
sudo dnf install -y 'dnf-command(copr)'
sudo dnf copr enable -y @caddy/caddy
sudo dnf install -y caddy
# Docker ile (en taşınabilir)
docker run -d --name caddy \
-p 80:80 -p 443:443 \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data \
caddy:2.9
v2.9.x sürüm bilgisi gördüyseniz kurulum tamamlanmıştır. Servis varsayılan olarak http://localhost:2019 üzerinde admin API sunar.
Caddy'nin yapılandırma dosyasına Caddyfile denir. Nginx'in karmaşık syntaxine kıyasla şaşırtıcı derecede basit ve okunabilir (refreshingly simple). Bir örnekle başlayalım:
# /etc/caddy/Caddyfile
example.com {
respond "Merhaba Alesta Web!"
}
Bu kadar! Caddy bu dosyayı okuduğunda example.com için otomatik olarak HTTPS sertifikası alır, HTTP'den HTTPS'e yönlendirir ve cevap olarak metin döndürür. Hiçbir ek yapılandırma gerekmez (no additional configuration needed).
site.example.com {
root * /var/www/site
file_server
}
# Caddyfile değiştirildikten sonra
sudo systemctl reload caddy
# Veya manuel olarak
sudo caddy reload --config /etc/caddy/Caddyfile
# Yapılandırmayı kontrol et (validate)
caddy validate --config /etc/caddy/Caddyfile
Reverse proxy, Caddy'nin en güçlü kullanım senaryolarından biri. Diyelim ki localhost:3000'de bir Node.js uygulamanız var ve onu app.example.com üzerinden HTTPS ile yayınlamak istiyorsunuz. Alesta Web olarak gerçek müşteri projelerinde aşağıdaki yapılandırmayı sıkça kullanıyoruz:
app.example.com {
reverse_proxy localhost:3000
}
Evet, sadece bu kadar. Caddy şunları otomatik yapar:
api.example.com {
# /api/* istekleri Node backend'e
handle /api/* {
reverse_proxy localhost:3000
}
# /admin/* istekleri Python backend'e
handle /admin/* {
reverse_proxy localhost:8000
}
# Geri kalanı statik dosya
handle {
root * /var/www/frontend
file_server
}
}
api.example.com {
reverse_proxy localhost:3000 {
# Backend'e ek header gönder
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
# Backend'den gelen response'a header ekle
header_down Strict-Transport-Security "max-age=31536000;"
}
}
Caddy'nin "killer feature"ı budur: domaininizi yazmanız yeterli — Caddy otomatik olarak Let's Encrypt'ten sertifika alır, HTTP-01 veya TLS-ALPN-01 challenge'ı çözer, sertifikayı kurar ve süresi dolmadan otomatik yeniler. Sertbot, cron job, manuel yenileme — hiçbiri gerekmez (none of those are needed).
Otomatik HTTPS'in çalışması için şu koşullar sağlanmalı:
*.example.com {
tls {
dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
@api host api.example.com
handle @api {
reverse_proxy localhost:3000
}
@app host app.example.com
handle @app {
reverse_proxy localhost:4000
}
}
Bu yapılandırma *.example.com için tek bir wildcard sertifika alır ve subdomain'leri ayrı ayrı yönetir. alestaweb.com gibi subdomain yoğun projelerde çok kullanışlı (very useful for subdomain-heavy sites).
Birden fazla backend'iniz varsa Caddy yük dengeleme yapabilir. Çeşitli stratejiler mevcuttur: round_robin (varsayılan), least_conn, ip_hash ve random.
api.example.com {
reverse_proxy {
to localhost:3001
to localhost:3002
to localhost:3003
lb_policy least_conn
health_uri /health
health_interval 10s
health_timeout 5s
}
}
Caddy 10 saniyede bir her backend'in /health endpoint'ini kontrol eder. 5 saniye içinde 2xx cevap gelmezse o backend'i pasif yapar. Backend tekrar sağlıklı olduğunda otomatik olarak rotasyona dahil eder (automatic failover and recovery).
HTTP/3 — TCP yerine UDP üzerinde çalışan QUIC protokolünü kullanır — özellikle mobil bağlantılarda ve yüksek gecikmeli ağlarda %20-40 daha hızlı (20-40% faster). Caddy 2.9 ile HTTP/3 varsayılan olarak etkin geliyor.
# HTTP/3 desteğini test et (curl 7.66+ gerekir)
curl --http3 -I https://example.com
# Tarayıcı (Chrome) DevTools → Network → Protocol sütunu
# 'h3' veya 'h3-29' gibi değerler görmelisiniz
Alesta Web uzmanlarının her iki sunucuyu da kullanma deneyimine dayanan karşılaştırma:
| Özellik | Nginx | Caddy 2.9 |
|---|---|---|
| Konfig syntax | Karmaşık | Çok basit |
| Otomatik HTTPS | Manuel (Certbot) | Yerleşik |
| HTTP/3 desteği | Deneysel | Varsayılan |
| Performans | Çok yüksek | Yüksek |
| Bellek kullanımı | Çok düşük | Orta |
| Plugin/modül | Recompile gerekir | xcaddy ile kolay |
| Öğrenme eğrisi | Dik | Yumuşak |
Nginx'in performans avantajı çok yüksek trafikli sitelerde (saniyede 50.000+ istek) hâlâ belirgin. Caddy ortalama orta-büyük projeler için fazlasıyla yeterli. Alesta Web ekibi olarak yeni başlayan ve hızlı kurulum isteyen ekiplere Caddy, ileri düzey yapılandırma ihtiyacı olan ekiplere Nginx öneriyoruz.
Genelde DNS veya port engelinden kaynaklanır.
# DNS doğru mu kontrol et
dig example.com +short
# Portlar açık mı?
sudo ufw status
sudo iptables -L
# Port 80 ve 443 açık olmalı
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Test sırasında sürekli sertifika denerseniz limit aşılabilir.
example.com {
tls {
# Test ortamında staging server kullanın
ca https://acme-staging-v02.api.letsencrypt.org/directory
}
respond "test"
}
Apache veya başka bir web sunucusu zaten 80 portunu dinliyor olabilir.
# 80 portunda ne çalışıyor?
sudo lsof -i :80
# Apache'yi durdur
sudo systemctl stop apache2
sudo systemctl disable apache2
# Caddy'yi başlat
sudo systemctl start caddy
Alesta Web olarak tüm yapılandırmaları Ubuntu 24.04 LTS üzerinde Caddy 2.9.x ile test ettik (verified on Ubuntu 24.04 LTS with Caddy 2.9.x).
Caddy 2.9, modern web sunucusu ihtiyaçları için son derece güçlü bir alternatif. Otomatik HTTPS tek başına tüm sertifika yönetim derdinizi ortadan kaldırır; Caddyfile'ın okunabilirliği ekibinizi mutlu eder; HTTP/3 desteği kullanıcılarınıza daha hızlı sayfa yükleme deneyimi sunar. Yeni projelerde direkt Caddy ile başlamayı düşünebilirsiniz.
Hızlı Özet / Quick Summary:
Faydalı Linkler / Useful Links:
© 2026 Alesta Web — Tüm hakları saklıdır. Sunucu kurulumu, reverse proxy yapılandırması, SSL sertifika yönetimi ve modern web altyapısı için profesyonel destek almak isterseniz alestaweb.com üzerinden iletişime geçebilirsiniz.