Proxy ve Reverse Proxy arasındaki fark nedir?
Kısa cevap
İkisi de istemci ile sunucu arasına giren bir ara katmandır; fark, kimin önünde durduğu ve kimi temsil ettiğidir. Proxy (forward proxy) istemcilerin önünde durur ve onlar adına dış sunuculara bağlanır; istemci onu kendi ayarıyla seçer, ağ düzeyinde araya giren şeffaf proxy'de ise ayar gerekmez. Reverse proxy sunucuların önünde durur ve onlar adına istemcilerden gelen istekleri karşılar; istemci arkadaki sunucuları görmez ve hiçbir ayar yapmaz. TR7'nin HTTP ve L7 TCP vService'leri reverse proxy olarak çalışır.
Temel Bilgi
RFC 9110 §3.7 bu iki ara katmanı şöyle tanımlar: proxy, istemcinin genellikle yerel yapılandırma kurallarıyla seçtiği ve isteği iletmek için kullandığı ara katmandır; istemcinin seçmediği, ağda araya giren türüne interception ya da transparent proxy denir. Gateway (diğer adıyla reverse proxy) ise istemciye karşı asıl sunucu (origin server) gibi davranır ve aldığı istekleri arkadaki bir ya da birden fazla sunucuya iletir.
Nasıl Çalışır?
- Proxy: Kullanıcının isteği önce proxy'ye gider; proxy isteği hedef siteye kendi adına iletir. Kurum, internete çıkan trafiği tek noktadan denetler, süzer ve loglar.
- Reverse proxy: Kullanıcı sitenin adresine bağlandığını düşünür; bu adres aslında reverse proxy'nindir. Reverse proxy isteği arkadaki uygun sunucuya iletir ve yanıtı kullanıcıya döndürür.
Karşılaştırma
| Proxy (forward proxy) | Reverse proxy | |
|---|---|---|
| Kimin önünde durur | İstemcilerin | Sunucuların |
| Kimi temsil eder | İstemcileri | Sunucuları |
| Neyi gizler | İstemcilerin IP adreslerini | Sunucuların adreslerini ve sayısını |
| İstemci tarafında ayar | Tarayıcı / işletim sistemi proxy ayarı; şeffaf (interception) proxy'de ayar gerekmez | Gerekmez; alan adı reverse proxy'nin adresini gösterir |
| Tipik kullanım | İnternet erişim denetimi, web filtreleme, çıkış trafiğini loglama | Yük dengeleme, TLS sonlandırma, cache, uygulama güvenliği |
TR7'de
TR7'nin HTTP ve L7 TCP vService'leri reverse proxy olarak çalışır; Network vService'ler bağlantıyı sonlandırmadığı için proxy değildir. TR7'nin çevresinde başka proxy'ler olduğunda şunlara dikkat edilir:
| Durum | Etkisi | Çözüm |
|---|---|---|
| TR7'nin önünde bir CDN ya da başka bir reverse proxy var | TR7, istemcinin değil o katmanın IP'sini görür | HTTP vService'te Trusted Proxies profiliyle gerçek istemci IP'si header'dan çözülür |
| İstemciler kurumsal bir forward proxy ya da NAT arkasında | Çok sayıda kullanıcı TR7'ye tek IP'den gelir | Kaynak IP'ye dayalı persistence, algoritma ve Source IP condition'ları buna göre planlanır; HTTP'de cookie tabanlı persistence tercih edilir |
| TR7'nin arkasındaki Kurum Servisi | Kurum Servisi, istemcinin değil TR7'nin IP'sini görür | HTTP'de X-Forwarded-For header'ı; HTTP ve L7 TCP'de SNAT → Use Client IP ile istemci IP'si iletilir |
Sık Karıştırılan Noktalar
- "Proxy ile reverse proxy aynı şeydir." Proxy istemcileri, reverse proxy sunucuları temsil eder; kullanım amaçları ve yerleri farklıdır.
- "Reverse proxy için kullanıcıların tarayıcı ayarı değişir." Değişmez. Alan adı reverse proxy'nin adresine yönlendirilir; kullanıcı araya bir katman girdiğini fark etmez.
- "Önde CDN varken TR7 gerçek istemci IP'sini kendiliğinden görür." Görmez; CDN'in eklediği header'daki IP'nin kullanılması için Trusted Proxies profili tanımlanıp vService'te seçilir.
Dokümantasyonda nasıl yapılır
İlgili sorular
- Load balancer, reverse proxy'den farklı mıdır?
- TR7'nin önünde Cloudflare / Akamai gibi bir CDN var; gerçek istemci IP'sini nasıl alırım (Trusted Proxy)?
- Kurumsal NAT arkasından gelen tüm kullanıcılar tek sunucuya gidiyor; neden?
- Backend sunucularım neden tüm istekleri TR7'nin IP'sinden geliyormuş gibi görüyor?
