"Proxy" kelimesi iki farklı yapı için kullanılır ve konuşmada bunlar sık karışır. Bir geliştirici "sitenin önüne proxy koyduk" dediğinde reverse proxy'den, bir veri ekibi "istekleri proxy'den geçiriyoruz" dediğinde forward proxy'den bahseder. İkisi de iki taraf arasında duran bir aracıdır; fark, kimin adına çalıştıklarında ve kimin onları yapılandırdığındadır.
Bu yazıda iki yapıyı ayrı ayrı tanımlıyor, bir isteğin her birinden nasıl geçtiğini adım adım gösteriyor, farkları tabloda topluyoruz. Ardından reverse proxy'nin yük dengeleme, TLS sonlandırma ve önbellek gibi görevlerini, CDN'lerin bu resmin neresinde durduğunu ve kısa bir Nginx yapılandırmasını ele alıyoruz.
Forward proxy nedir?
Forward proxy, bir veya birden fazla istemcinin internete çıkarken kullandığı aracıdır. İstemci proxy'nin adresini bilir ve isteklerini ona gönderir; proxy bu istekleri kendi IP adresiyle hedef sitelere iletir. Hedef site bağlantıyı proxy'den gelmiş olarak görür.
Günlük dilde "proxy" dendiğinde neredeyse her zaman forward proxy kastedilir. Proxy hizmeti satan şirketlerin sunduğu residential, datacenter veya mobil proxy'lerin hepsi forward proxy'dir. Temel çalışma mantığını Proxy Sunucu Nedir ve Nasıl Çalışır? yazımızda ayrıntılı anlattık.
Bir isteğin forward proxy üzerinden izlediği yol şöyledir:
- Kullanıcı tarayıcısında veya kodunda proxy adresini tanımlar.
- İstemci, hedef siteye değil proxy'ye bağlanır ve HTTPS için
CONNECT hedef.com:443isteği gönderir. - Proxy gerekirse kimlik doğrular, ardından hedef siteye kendi IP adresiyle bağlanır.
- Hedef site isteği proxy'nin IP adresinden gelmiş olarak kaydeder ve yanıtı ona gönderir.
- Proxy yanıtı istemciye iletir.
Komut satırında forward proxy kullanmak tek bir seçenektir:
curl -x "http://kullanici:parola@pr.proxynet.io:8000" https://httpbin.org/ipBurada istemci proxy'nin varlığından haberdardır, çünkü adresini kendisi vermiştir.
Reverse proxy nedir?
Reverse proxy, bir veya birden fazla sunucunun önüne yerleştirilen aracıdır. Ziyaretçi ornek.com adresine bağlandığında aslında reverse proxy'ye bağlanır; reverse proxy isteği arkadaki uygulama sunucularından birine iletir ve yanıtı ziyaretçiye döndürür. Ziyaretçi kendisine yanıt veren makinenin kim olduğunu bilmez ve bilmesi de gerekmez.
HTTP standardı RFC 9110, bu yapıya "gateway" ya da "reverse proxy" der ve onu, istemcinin gözünde asıl sunucu gibi davranan bir aracı olarak tanımlar. İstemci açısından reverse proxy, sitenin kendisidir.
Bir isteğin reverse proxy üzerinden izlediği yol şöyledir:
- Ziyaretçi
ornek.comadresini açar; DNS bu adı reverse proxy'nin IP adresine çözer. - Reverse proxy bağlantıyı kabul eder ve genellikle TLS şifrelemesini burada çözer.
- İsteğin yoluna, alan adına veya yük durumuna göre arkadaki sunuculardan birini seçer.
- İsteği o sunucuya iletir; ziyaretçinin gerçek IP adresini
X-Forwarded-ForveyaForwardedbaşlığıyla ekler. - Uygulama sunucusunun yanıtını alır, gerekirse önbelleğe kaydeder ve ziyaretçiye gönderir.
Aralarındaki fark nedir?
İki yapı da trafiği bir uçtan alıp diğerine iletir. Farkı en kısa yoldan görmek için "bu aracı kimin çıkarına çalışıyor" sorusunu sormak yeterlidir.
| Ölçüt | Forward proxy | Reverse proxy |
|---|---|---|
| Kimi temsil eder? | İstemciyi | Sunucuyu |
| Nerede durur? | İstemci ile internet arasında | İnternet ile sunucular arasında |
| Kim yapılandırır? | Kullanıcı veya ağ yöneticisi | Site sahibi veya altyapı ekibi |
| İstemci farkında mı? | Evet, adresi istemci tanımlar | Hayır, siteye bağlandığını düşünür |
| Kimin IP'si gizlenir? | İstemcinin | Arkadaki sunucuların |
| Hedef kaç tane? | İnternetteki herhangi bir site | Arkadaki belirli sunucular |
| TLS | HTTPS'te tünel kurar, içeriği görmez | Çoğunlukla TLS'i kendisi sonlandırır |
| Önbellek | Şifresiz HTTP'de mümkün | Yaygın kullanılır |
| Tipik yazılım | Squid, ticari proxy hizmetleri | Nginx, HAProxy, Envoy, CDN'ler |
| Tipik kullanım | Erişim kontrolü, konum bazlı erişim, veri toplama | Yük dengeleme, güvenlik, önbellek |
Tablodaki en önemli satır TLS satırıdır. Forward proxy HTTPS trafiğinde yalnızca tünel açar ve şifreli baytları taşır. Reverse proxy ise sitenin sertifikasına sahip olduğu için trafiği çözer, isteği okur ve yönlendirme kararını içeriğe göre verebilir.
Reverse proxy ne için kullanılır?
Reverse proxy'nin görevleri, arkadaki uygulamanın kendisiyle uğraşmak zorunda kalmadığı işlerdir:
- Yük dengeleme. Gelen istekleri birden fazla uygulama sunucusuna dağıtır. Bir sunucu yanıt vermezse trafiği diğerlerine yönlendirir; ziyaretçi arızayı fark etmez.
- TLS sonlandırma. Sertifika yönetimi ve şifre çözme tek noktada yapılır. Arkadaki sunucular iç ağda şifresiz HTTP konuşabilir ya da ayrı bir iç sertifikayla çalışır.
- Önbellek ve sıkıştırma. Sık istenen sayfaları ve statik dosyaları saklar, yanıtları sıkıştırır. Uygulama sunucusuna giden istek sayısı azalır.
- Güvenlik katmanı. Web uygulama güvenlik duvarı (WAF) kurallarını, hız sınırlarını ve bot filtrelerini uygular. Arkadaki sunucuların IP adresleri doğrudan saldırıya açık kalmaz.
- Yol bazlı yönlendirme.
/apiisteklerini bir servise,/blogisteklerini başka bir servise gönderir. Tek alan adı altında birden çok uygulama çalışır. - Kesintisiz dağıtım. Yeni sürümü yeni sunuculara kurup trafiği kademeli olarak kaydırmak reverse proxy üzerinden yapılır.
Reverse proxy'nin güvenlik rolünü, firewall ile nasıl birlikte çalıştığını Proxy ve Firewall Farkı yazımızda ele aldık.
Nginx ile basit bir reverse proxy nasıl kurulur?
Nginx'te reverse proxy'nin temel yönergesi proxy_pass'tır. Aşağıdaki yapılandırma, 443 portundan gelen trafiği iki uygulama sunucusuna dağıtır ve ziyaretçinin gerçek IP adresini arkaya iletir:
upstream uygulama {
server 10.0.0.11:3000;
server 10.0.0.12:3000;
}
server {
listen 443 ssl;
server_name ornek.com;
ssl_certificate /etc/ssl/ornek.com/fullchain.pem;
ssl_certificate_key /etc/ssl/ornek.com/privkey.pem;
location / {
proxy_pass http://uygulama;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Satırların işlevi:
upstreambloğu arkadaki sunucuları tanımlar. Nginx varsayılan olarak istekleri sırayla dağıtır;least_connveyaip_hashgibi yönergelerle yöntem değiştirilebilir.listen 443 sslve sertifika satırları TLS sonlandırmayı reverse proxy'de yapar.proxy_passisteğiuygulamagrubuna iletir.proxy_set_headersatırları olmadan arkadaki uygulama her isteği reverse proxy'nin IP adresinden gelmiş gibi görür; kayıtlar ve hız sınırları anlamsızlaşır.
Yönergelerin tam listesi Nginx'in ngx_http_proxy_module belgesinde bulunur.
X-Forwarded-For başlığına güvenilir mi?
Reverse proxy arkasındaki bir uygulama ziyaretçinin IP adresini X-Forwarded-For başlığından okur. Bu başlık düz metindir ve istemci de onu gönderebilir. Uygulama başlığa körü körüne güvenirse, bir ziyaretçi sahte bir IP adresi yazarak hız sınırını veya IP bazlı kısıtlamayı aşabilir.
Doğru yaklaşım şudur:
- Başlığı yalnızca bilinen reverse proxy'lerden gelen bağlantılarda dikkate almak. Nginx'te bu
set_real_ip_fromvereal_ip_headeryönergeleriyle yapılır. - Birden fazla aracı varsa listenin sağından sola doğru okuyup güvenilen son aracıdan önceki adresi almak.
- Standart hâline getirilmiş
Forwardedbaşlığını (RFC 7239) destekleyen altyapılarda onu tercih etmek.
Aynı mantık forward proxy tarafında da geçerlidir: bir hedef site, proxy'nin eklediği başlıklara bakarak gerçek istemciyi görebilir. Proxy hizmetlerinin çoğu bu yüzden istemci IP'sini taşıyan başlıkları eklemez.
CDN bir reverse proxy mi?
Evet. Bir içerik dağıtım ağı (CDN), dünyanın farklı yerlerinde konumlanmış reverse proxy sunucularından oluşur. Bir siteyi CDN arkasına aldığınızda alan adınız CDN'in IP adreslerine çözülür; ziyaretçi en yakın CDN sunucusuna bağlanır, CDN önbellekte olmayan istekleri sizin sunucunuza (origin) iletir.
Bu yüzden CDN'ler reverse proxy'nin bütün görevlerini geniş ölçekte üstlenir: TLS sonlandırma, önbellek, DDoS emme, WAF ve bot yönetimi. Bir scraper'ın karşılaştığı hız sınırları ve bot doğrulama sayfaları çoğunlukla hedef sitenin kendisinden değil, önündeki bu reverse proxy katmanından gelir. Bu katmanın bot trafiğini nasıl sınıflandırdığına bir örnek Cloudflare Precursor yazımızda.
Forward ve reverse proxy aynı anda kullanılır mı?
Çoğu isteğin yolunda ikisi birden bulunur. Bir veri ekibinin betiği bir e-ticaret sitesinden fiyat çektiğinde yol şöyledir:
- Betik isteği ekibin kullandığı forward proxy'ye gönderir.
- Forward proxy, sitenin alan adını çözer ve sitenin önündeki CDN'e (reverse proxy) bağlanır.
- CDN isteği değerlendirir, önbellekte yoksa sitenin uygulama sunucusuna iletir.
- Yanıt aynı zinciri tersine izleyerek betiğe döner.
Burada site forward proxy'nin çıkış IP'sini, betik de CDN'in IP'sini görür; iki taraf da diğerinin arkasındaki gerçek makineyi bilmez. Kurumsal ağlarda zincir daha da uzar: çalışan bilgisayarı → şirket proxy'si → firewall → internet → sitenin CDN'i → uygulama sunucusu.
Kullanım senaryoları
- Veri toplama ekibi: Farklı ülkelerdeki fiyatları görmek ve istekleri dağıtmak için forward proxy kullanır. Tek adres üzerinden her bağlantıda farklı IP veren Rotating Proxy bu iş için kurulur. Tarama işlerinin ölçeklenmesi web crawler çözümü sayfamızda.
- Kurumsal BT ekibi: Çalışan trafiğini tek çıkıştan geçirip kayıt tutmak için forward proxy, şirket içi uygulamaları dışarı açmak için reverse proxy kullanır. Veri güvenliği tarafı veri güvenliği çözümü sayfamızda.
- Web uygulaması geliştiricisi: Uygulamasını Nginx veya bir CDN arkasına alır; yük dengeleme ve TLS'i uygulama kodundan ayırır.
- Yazılım test ekibi: Uygulamanın başka ülkelerden nasıl açıldığını görmek için forward proxy, test ortamındaki servisleri tek alan adında toplamak için reverse proxy kullanır.
- Bireysel kullanıcı: Tarayıcı trafiğini başka bir konumdan çıkarmak için HTTPS Proxy gibi bir forward proxy tanımlar. Şifreleme de gerekiyorsa VPN'e bakar; fark Proxy ve VPN Farkı yazımızda.
Sık yapılan hatalar
- Reverse proxy'yi anonimlik aracı sanmak. Reverse proxy site sahibini korur; ziyaretçinin IP adresini gizlemez, aksine
X-Forwarded-Forile arkaya iletir. Hostbaşlığını iletmemek. Nginx varsayılan olarakproxy_passadresindeki sunucu adını gönderir. Arkadaki uygulama alan adına göre çalışıyorsa yanlış siteyi veya hata sayfasını döner.- Arkadaki sunucuyu doğrudan erişime açık bırakmak. Reverse proxy'nin güvenlik kuralları, uygulama sunucusunun IP adresiyle doğrudan erişilebildiği anda anlamını yitirir. Uygulama portu yalnızca reverse proxy'nin iç adresine açılmalıdır.
- Forward proxy'de başlıklarla kimlik taşımak. Kendi kurduğunuz bir Squid proxy'si varsayılan ayarlarla
X-Forwarded-ForveViabaşlıklarını ekleyebilir; bu durumda hedef site istemcinin gerçek adresini görür. - Zaman aşımlarını eşleştirmemek. Reverse proxy'nin zaman aşımı uygulamanınkinden kısaysa uzun süren istekler
504 Gateway Timeoutile kesilir.
Karar rehberi
| İhtiyacınız | Öneri |
|---|---|
| İstekleri başka bir IP adresinden göndermek | Forward proxy |
| Farklı ülkelerdeki içeriği görmek | Forward proxy (konum seçimli) |
| Çalışan trafiğini tek noktadan denetlemek | Forward proxy (kurumsal) |
| Sitenizi birden çok sunucuya dağıtmak | Reverse proxy |
| TLS sertifikalarını tek yerde yönetmek | Reverse proxy |
| Sitenizi saldırı ve bot trafiğine karşı korumak | Reverse proxy veya CDN |
| Statik içeriği dünyaya hızlı sunmak | CDN |
Sık sorulan sorular
Ters proxy ile reverse proxy aynı şey mi?
Evet. "Ters proxy", reverse proxy'nin Türkçe karşılığıdır. Teknik belgelerde ve yazılım ayarlarında İngilizce terim daha yaygın geçer.
VPN bir forward proxy mi?
İşlev olarak benzerdir: trafiğinizi başka bir sunucudan çıkarır ve hedef site o sunucunun IP adresini görür. Ancak VPN işletim sistemi düzeyinde çalışır ve cihazınızla VPN sunucusu arasındaki bütün trafiği şifreler. Forward proxy ise uygulama bazında ayarlanır ve kendiliğinden şifreleme yapmaz.
Nginx forward proxy olarak kullanılabilir mi?
Nginx şifresiz HTTP isteklerini iletebilir, ancak HTTPS için gereken CONNECT yöntemini standart sürümde desteklemez; bunun için üçüncü taraf bir modül gerekir. Forward proxy için genellikle Squid gibi bu işe özel yazılımlar tercih edilir.
Reverse proxy siteyi yavaşlatır mı?
Araya bir durak eklediği için teoride küçük bir gecikme ekler. Pratikte önbellek, sıkıştırma, bağlantıların yeniden kullanımı ve ziyaretçiye yakın konumlanma sayesinde çoğu site reverse proxy veya CDN arkasında daha hızlı açılır.
Bir site reverse proxy arkasında olduğunu belli eder mi?
Çoğu zaman eder. Yanıt başlıklarında Server, Via veya CDN'e özgü başlıklar görünür; alan adının IP adresi bir CDN'e ait çıkar. Ancak bu bilgi arkadaki sunucunun adresini vermez.
Proxy hizmetleri hangi türdür?
Residential, datacenter, ISP ve mobil proxy hizmetlerinin hepsi forward proxy'dir. Size bir giriş adresi verilir, istekleriniz bu adres üzerinden sağlayıcının çıkış IP'lerinden birine yönlenir.
Özetle
Forward proxy istemciyi, reverse proxy sunucuyu temsil eder. Forward proxy'yi kullanıcı bilerek tanımlar ve hedef site proxy'nin IP adresini görür; reverse proxy'yi site sahibi kurar ve ziyaretçi arkadaki sunuculardan habersiz kalır. Reverse proxy yük dengeleme, TLS sonlandırma, önbellek ve güvenlik için kullanılır; CDN'ler bu yapının dünya ölçeğindeki hâlidir. İsteklerinizi farklı IP adreslerinden ve konumlardan göndermeniz gerekiyorsa aradığınız forward proxy'dir; seçenekleri proxy hizmetlerimizde bulabilirsiniz.




