# API sunucumu Cloudflare Tunnel arkasına alıp 443'ü internete kapatmalı mıyım?

> Tünel sağlam bir desen ama tek yol bağımlılığıdır; mevcut Caddy kurulumunda kalıp origin'i Cloudflare IP'lerine kilitleyin ve origin pulls ekleyin.

- Soruldu: 2026-06-08
- Yanıtlandı: 2026-06-13
- Soran: Gazi
- Etiketler: altyapi, cloudflare, laravel
- Kaynak: https://muhammetsafak.com/tr/sor-bakalim/api-sunucusunu-cloudflare-tunnel-arkasina-mi-almali/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
**Soru:** AWS EC2 üzerinde API sunucumu Laravel Octane'in FrankenPHP sürücüsüyle servis ediyorum. Aklıma şöyle bir kurgu geldi: Cloudflare'den bir tunnel oluşturup uygulama sunucusuna yönlendirsem ve uygulama localhost:8080'de çalışsa, API sunucusunda 443 hiç internete çıkmamış, SSL yönetimi de API sunucusunda olmamış olur. Bu ne kadar doğru olur, dezavantajları ne olur?

Mevcut kurulumum şöyle: Deployment için DeployerPHP kullanıyorum. Trafik Cloudflare → Caddy → App şeklinde akıyor. SSL sertifikasını Cloudflare Origin ile alıp app sunucusunda Caddy konfigürasyonu üzerinden okutuyorum; Cloudflare tarafında SSL "Full (strict)" modunda. Laravel Octane, Caddy ile birlikte bir supervisor süreci olarak 0.0.0.0:443'te çalışıyor (FrankenPHP sürücüsü, max-requests=500, admin-port=2019).


Kısa cevap: Evet, teknik olarak sağlam bir desen — ama ben olsam sizin yerinizde mevcut kurulumunuzda kalırdım.

## Kısa cevap

Cloudflare'in Zero Trust tarafı da private bir origin'i internete hiç açmadan tünel üzerinden yayınlamayı zaten bu şekilde öneriyor. Sizin senaryonuzda uygulama `127.0.0.1:8080`'de çalışır, `cloudflared` tüneli isteği oraya taşır; 443 hiçbir zaman internete çıkmamış olur ve SSL yönetimi tamamen Cloudflare'e devredilir. Yine de "kurdum, gerisi gelir" diyebileceğiniz bir şey değil — bilmeniz ve kabul etmeniz gereken birkaç nokta var. Cloudflare'e ne kadarını devrettiğinizin diğer yüzünü, edge tarafındaki cache ve invalidation kararlarını konuştuğumuz [Workers KV kaydında](/tr/sor-bakalim/cloudflare-workers-kv-ile-edge-cache-ve-invalidation/) ele almıştım.

## Neden

1. **Tek yol Cloudflare olur.** Tünel açıldığında origin'e tek giriş kapısı Cloudflare'dir; bir CF kesintisinde devreye girecek bir fallback'in olmaz. Bu bağımlılığı bilerek almalısınız.
2. **Cloudflare'in zaman aşımı sınırları tünelde de geçerli.** Edge'deki request timeout tünelden geçen isteklere de uygulanır; tünel ayrıca kendi origin-taraflı zaman aşımlarını (connectTimeout, tlsTimeout, keepAliveTimeout) ekler. Uzun süren işleri senkron tutmayın, queue'ya alın.
3. **Gerçek istemci IP'si bir katman daha uzaklaşır.** Loopback'e inen bir istekte kaynağı yalnızca proxy başlıklarından okuyabilirsiniz; bu da uygulama tarafında ek bir güven ayarı gerektirir.

## Ne yapmalı

1. **Süreci düzgün yönetin.** Tünel istemcisini (`cloudflared`) systemd altında `autorestart` açık şekilde çalıştırın. Aynı tünel token'ı ile iki replica koşturarak kesintisizliği artırabilirsiniz — ama bu artık bir ölçekleme konusu, başlangıçta gerekmez.
2. **Uygulamayı asla `0.0.0.0`'a bind etmeyin.** Tünel modelinde uygulamanın yalnızca loopback'ten (`127.0.0.1:8080`) erişilebilir olması gerekir; dışarıya açık bir port kalmamalı. Şu anki supervisor konfigürasyonundaki `--host=0.0.0.0 --port=443` tam da bu yüzden değişmeli.
3. **Trusted proxy'leri mutlaka ayarlayın.** Laravel'in `TrustProxies` ayarını yapmazsanız tüm istekler loopback'ten geliyormuş gibi görünür; gerçek istemci IP'sini kaybedersiniz; rate limit'ler ve loglar bozulur.

**Sonuç:** Tek yol bağımlılığını ve kesintisizliği Cloudflare'in HA'sına emanet etmeyi göze alıyorsanız, tünel en temiz çözüm. Ama ben olsam sizin mevcut `Cloudflare → Caddy → App` kurulumunuzda kalıp, origin'i bir Security Group kuralıyla yalnızca Cloudflare IP aralıklarına kilitler ve buna authenticated origin pulls eklerdim — bu, 443'ü efektif olarak dışarıya kapatırken tek-yol bağımlılığına girmediğiniz için daha esnek olur.

## İlgili Yazılar

- [Laravel Octane: kalıcı süreçle gelen performans](/tr/blog/laravel-octane-kalici-surecle-gelen-performans/) — Blog
- [Laravel Queue ve Supervisor ile Asenkron İşlemler](/tr/blog/laravel-queue-ve-supervisor-ile-asenkron-islemler/) — Blog
- [2-5 GB dosyaları PHP belleğini şişirmeden stream ile nasıl indirtirim?](https://muhammetsafak.com/tr/sor-bakalim/buyuk-dosyalari-php-bellegini-sismeden-stream-ile-indirmek/) — Sor Bakalım
- [Cloudflare Workers + KV ile edge cache kurarsam invalidation'ı nasıl yaparım?](https://muhammetsafak.com/tr/sor-bakalim/cloudflare-workers-kv-ile-edge-cache-ve-invalidation/) — Sor Bakalım
- [Birçok modele bağlanan yorumlar için polymorphic ilişki mi yoksa ayrı tablolar mı; index ve foreign key açısından hangisi daha sağlıklı?](https://muhammetsafak.com/tr/sor-bakalim/bircok-modele-baglanan-yorumlar-polymorphic-iliski-ayri-tablolar/) — Sor Bakalım
