İçeriğe geç
Melinhost

Caddy ile ters proxy ve otomatik HTTPS: tek dosyada çoklu uygulama

Aynı sunucudaki birden çok uygulamayı alan adlarıyla yayınlayın; sertifikaları Caddy otomatik alsın ve yenilesin.

Rehberler · 3 dk okuma

caddy-reverse-proxy-https

Bir sunucuda birden fazla web uygulaması çalıştırıyorsanız hepsini 80 ve 443 portlarından, alan adına göre yönlendiren bir ters proxy yayınlar. Caddy bunu tek bir kısa dosyayla yapar ve HTTPS sertifikalarını kendisi alıp yeniler.

Ters proxy mimarisi
İnternet 443 üzerinden Caddy’ye gelir; Caddy alan adına göre doğru uygulamaya iletir.

Önkoşullar

  • Docker ve Compose (bkz. Docker kurulumu).
  • Her uygulama için bir alan adı ya da alt alan adı; A kaydı sunucu IP adresini göstermeli (bkz. DNS kayıtları).
  • Güvenlik duvarında 80 ve 443 açık: sudo ufw allow 80,443/tcp

1. Compose dosyası

Caddy ve uygulamalar aynı Compose projesinde olduğunda birbirlerine servis adıyla ulaşır; uygulamaların portlarını dışarı yayınlamanız gerekmez.

services:
  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config

  uygulama:
    image: traefik/whoami
    restart: unless-stopped

volumes:
  caddy_data:
  caddy_config:

2. Caddyfile

uygulama.alanadiniz.com {
    reverse_proxy uygulama:80
}

# ikinci uygulama için aynı kalıp:
# git.alanadiniz.com {
#     reverse_proxy gitea:3000
# }

Her blok bir alan adıdır ve reverse_proxy hedefi, aynı ağdaki container adı ve portudur.

3. Başlatın

docker compose up -d
docker compose logs -f caddy

Caddy ilk istekte sertifikayı otomatik alır (Let’s Encrypt); günlükte “certificate obtained successfully” görünür. Tarayıcıdan https://uygulama.alanadiniz.com adresini açın.

Yeni uygulama eklemek

  1. Uygulamanın servisini Compose dosyasına ekleyin (ana makineye port yayınlamanıza gerek yok).
  2. Caddyfile’a yeni bir alan adı bloğu ekleyin.
  3. Yapılandırmayı yeniden yükleyin: docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile

Uygulama Compose projenizden ayrıysa, ortak bir Docker ağı oluşturup hem Caddy’yi hem uygulamayı o ağa bağlayın (docker network create proxy ve her servise networks: [proxy]).

Faydalı eklemeler

İhtiyaçCaddyfile
www’yi ana alan adına yönlendirmewww.alanadiniz.com { redir https://alanadiniz.com{uri} }
Sıkıştırmaencode zstd gzip
Temel kimlik doğrulamabasicauth (bcrypt özetiyle)
Yalnızca belirli IP’ler@izinli remote_ip 203.0.113.0/24 ile eşleşme

Sorun giderme

  • Sertifika alınamadı: A kaydının doğru olduğundan ve 80/443 portlarının açık olduğundan emin olun (bkz. DNS yansımadı).
  • 502 Bad Gateway: hedef container çalışmıyor ya da ad/port yanlış: docker compose ps ve reverse_proxy hedefini kontrol edin.
  • Sınır: Let’s Encrypt’in sertifika sıklığı sınırları vardır; deneme yaparken alan adını sık sık silip yeniden eklemeyin.

Melinhost ile başlayın

Birden çok uygulama için 4 vCPU ve 8 GB RAM düzeyinde bir bulut sunucu rahat bir başlangıçtır.

İlgili yazılar

Çerez tercihleri

Sitenin çalışması için gerekli çerezleri kullanıyoruz. Analitik ve pazarlama çerezleri yalnızca onayınızla etkinleşir. Çerez Politikası