Ters proxy, bir veya daha fazla web sunucusunun önünde yer alan ve istemci isteklerini alıp bu sunuculara ileten bir sunucudur, böylece istemciler kaynağa değil proxy'ye bağlanır. Yük dengeleme, önbellekleme, TLS sonlandırma ve güvenlik için yaygın olarak kullanılır. Bu sözlükteki diğer tüm proxy türleri ileri proxyler olup, istemci adına hareket eder. Ters proxy ise sunucu adına hareket eder.
Ters proxyler, web hizmetinin operatörü tarafından dağıtılır, istekte bulunan kişiler tarafından değil. Nginx, Varnish ve Apache HTTP Sunucusu ters proxy olarak çalışabilir ve Cloudflare'ın CDN'si de bir ters proxy olarak işlev görür.
Ters Proxy Nasıl Çalışır
- Bir istemci, sitenin adresine sıradan bir istek gönderir. Ters proxy, istemciye normal bir web sunucusu gibi görünür, bu nedenle istemci yapılandırması gerekmez.
- Proxy, hangi arka uç sunucusunun isteği işlemesi gerektiğine karar verir ve iletir. HTTP standardı (RFC 9110) buna bir geçit der: istemci için kök sunucu gibi davranır ancak istekleri diğer sunuculara iletir.
- Arka uç yanıt verir ve proxy, içeriği kök sunucuymuş gibi geri döner. Örneğin, Nginx, varsayılan olarak tam arka uç yanıtını göndermeden önce tamponlar.
Ters Proxy vs. İleri Proxy
| İleri proxy | Ters proxy | |
|---|---|---|
| Kim için çalışır | İstemci | Sunucu |
| Kurulum yapan | Kullanıcı veya istemci uygulaması | Site operatörü |
| İstemci yapılandırması | Gereklidir | Yok |
| Gizler | İstemcinin kimliğini sunuculardan | Sunucuların kimliklerini istemcilerden |
| Tipik kullanımlar | Gizlilik, web kazıma, bir güvenlik duvarının arkasından internet erişimi | Yük dengeleme, önbellekleme, TLS sonlandırma, bir güvenlik duvarının arkasındaki sunuculara erişim |
Ters Proxylerin Ne Yaptığı
- Yük dengeleme: istekleri birkaç arka uç sunucusu arasında yaymak. Nginx varsayılan olarak round-robin kullanır ve ayrıca her istemciyi aynı sunucuda tutan en az bağlantı ve IP hash seçenekleri sunar.
- Aşırı yükleme: Nginx, hatalardan sonra bir sunucuyu başarısız olarak işaretler ve belirli bir süre boyunca ondan kaçınır.
- Önbellekleme: yanıtların kopyalarını, örneğin statik içerik gibi, daha yavaş arka uç sunucuların yükünü azaltmak için saklar.
- TLS sonlandırma: istemci isteklerini şifrelerini çözer ve yanıtları şifreler, böylece arka uç sunucular bununla uğraşmak zorunda kalmaz.
- Sıkıştırma: içerikleri sıkıştırarak yükleme sürelerini hızlandırır.
- Bir adres, birçok sunucu: birkaç sunucuyu aynı URL alanına getirir.
Ters Proxy vs. Yük Dengeleyici
Yük dengeleme, ters proxy'nin yapabileceği bir iş olup, ayrı bir sunucu türü değildir. Nginx, istekleri bir grup üst akış sunucusuna ileterek HTTP yük dengeleyici olarak işlev görür. Tek bir arka uca yönlendiren bir ters proxy, örneğin Apache'nin bir URL yolunu bir iç hosta göndermesi gibi, hiçbir şeyi dengelemese bile hala bir ters proxy'dir.
Web Kazıma İçin Ne Anlama Geliyor
- Önce proxy'e ulaşırsınız: Bir site ters proxy kullandığında, isteğiniz orijinal sunucu tarafından görülmeden önce burada işlenir, böylece önbellekleme, hız sınırlamaları ve bot kontrolleri proxy'de uygulanabilir.
- İstemci IP'si başlıklarda: Arka uç, ters proxy'nin adresini görür, bu nedenle proxy genellikle istemcinin IP'sini bir başlıkta iletir. Nginx belgeleri
X-Real-IPgösterir ve X-Forwarded-For bu konuda de facto standart başlıktır. Eğer bir ileri proxy üzerinden bağlanıyorsanız, o başlık ileri proxy'nin IP'sini taşır, sizin IP'nizi değil.
Güvenlik Değerlendirmeleri
- Şifrelenmemiş trafik: TLS'yi sonlandıran bir ters proxy, sitenin sertifika anahtarını tutar ve istekleri şifrelenmemiş olarak işler.
- Açık proxy riski: Apache belgeleri, açık proxy sunucularının ağınıza ve genel olarak internete tehlikeli olduğunu uyarır. Bir ters proxy'nin ileri proxy (
ProxyRequests) özelliğinin açık olması gerekmez.