
Sunucunuzda bir web sitesi, bir API servisi ve bir yönetim paneli çalışıyor. Üçü de farklı portlarda dinliyor ve kullanıcıların adresin sonuna port numarası yazması gerekiyor.
Ters vekil bu sorunu çözer ve çok daha fazlasını sağlar. Bu yazı, VDS sunucu üzerinde ters vekil mimarisini anlatıyor.
Ters Vekil Ne Yapar?
Ters vekil, gelen tüm istekleri karşılayan ve arkadaki uygulamalara yönlendiren bir katmandır. Kullanıcı yalnızca vekili görür; arkada kaç uygulama olduğunu bilmez.
Yönlendirme iki ölçüte göre yapılabilir:
| Ölçüt | Kullanım |
|---|---|
| Alan adına göre | Farklı siteler, farklı uygulamalara gider |
| Yola göre | Aynı adresin farklı bölümleri |
Bu yapı, tek bir sanal sunucu üzerinde birbirinden bağımsız uygulamaları temiz adreslerle yayınlamanızı sağlar.
Sağladığı Faydalar
- Tek SSL noktası. Sertifikayı yalnızca vekil katmanında yönetirsiniz; arkadaki uygulamaların şifreleme ile ilgilenmesi gerekmez.
- Uygulamalar dışarıya kapalı kalır. Yalnızca yerel arayüzü dinlerler; doğrudan erişilemezler.
- Merkezi güvenlik kuralları. Hız sınırlama, erişim kısıtı ve istek filtreleme tek yerde tanımlanır.
- Statik dosya sunumu. Görsel ve betikler uygulamaya hiç uğramadan sunulur.
- Sıkıştırma ve önbellekleme. Vekil katmanında yapılır, her uygulamada ayrı ayrı kurulmaz.
- Kesintisiz güncelleme imkânı. Uygulamanın yeni sürümü hazırlanır, trafik ona yönlendirilir.
İkinci madde en değerli güvenlik kazancıdır: arkadaki uygulamalar internete hiç açılmaz. Bir uygulamada güvenlik açığı olsa bile, ona ulaşmanın tek yolu vekil katmanından geçmektir.
SSL Sonlandırma
Şifreli bağlantı vekil katmanında çözülür ve arkaya düz bağlantı olarak iletilir. Bu, "SSL sonlandırma" olarak adlandırılır.
Avantajları:
- Tek sertifika yönetimi. Yenileme tek yerde yapılır.
- Uygulama basitleşir. Şifreleme kodu yazmanız gerekmez.
- Performans. Şifreleme işlemi optimize edilmiş bir katmanda yapılır.
Dikkat edilecek nokta: arka bağlantı şifresiz olduğu için, vekil ile uygulama aynı sunucuda olmalıdır. Farklı sunuculardaysa o bağlantı da şifrelenmelidir — aksi hâlde ağda düz metin trafik dolaşır.
Bir de uygulama tarafında bilinmesi gereken bir ayrıntı vardır: uygulama, isteğin şifreli geldiğini bilmez. Bu yüzden ürettiği bağlantılar yanlış olabilir. Vekilin ilettiği protokol bilgisini uygulamanın dikkate alacak şekilde yapılandırılması gerekir.
İletilecek Başlıklar
Vekil arkasındaki uygulama, isteğin gerçek kaynağını göremez — tüm istekler vekilden geliyor görünür. Bu, birkaç sorun üretir:
- Ziyaretçi IP'si kaybolur. Loglarınızda herkes aynı adresten gelmiş görünür.
- Hız sınırlama bozulur. Uygulama tüm istekleri tek kaynaktan sayar.
- Coğrafi tespit çalışmaz.
- Güvenlik kuralları yanlış tetiklenir. IP bazlı engellemeler işe yaramaz.
Çözüm, vekilin gerçek kaynak bilgisini özel başlıklarla iletmesi ve uygulamanın bunları okuyacak şekilde yapılandırılmasıdır.
Kritik bir güvenlik uyarısı: uygulamanız bu başlıklara yalnızca güvendiğiniz vekilden geldiğinde inanmalıdır. Aksi hâlde bir saldırgan sahte başlık göndererek IP bazlı kısıtlarınızı atlayabilir.
Zaman Aşımı Ayarları
Vekil ile uygulama arasındaki zaman aşımı ayarları, sıkça sorun üreten bir alandır.
Tipik belirti: uzun süren bir işlem — rapor üretimi, büyük dosya yükleme — belirli bir süre sonra hata veriyor, ama uygulama loglarında bir sorun görünmüyor.
Nedeni şudur: vekil beklemeyi bırakıp bağlantıyı kesmiştir. Uygulama işini tamamlamış olabilir ama yanıt kullanıcıya ulaşmamıştır.
Ayarlanması gereken süreler:
- Bağlantı kurma süresi
- Yanıt bekleme süresi
- İstek gönderme süresi
Uzun süren işlemleriniz varsa bu süreleri artırın — ya da daha iyisi, o işlemleri arka plana taşıyın.
Sık Yapılan Hatalar
- Uygulamaları dışarıya açık bırakmak. Vekil kurulur ama uygulamalar hâlâ tüm arayüzlerden erişilebilir durumdadır. Yalnızca yerel arayüzü dinlemelerini sağlayın.
- Güvenlik duvarını ihmal etmek. Uygulama portları dışarıya kapalı olmalı.
- Büyük yükleme limitini unutmak. Vekil katmanında da istek boyutu sınırı vardır.
- Web soketi desteğini yapılandırmamak. Gerçek zamanlı bağlantı kullanan uygulamalar için özel ayar gerekir.
- Hata sayfalarını karıştırmak. Vekilin ürettiği hata mı, uygulamanınki mi?
Üçüncü madde tanısı zor bir sorun üretir: kullanıcı büyük bir dosya yüklemeye çalışır, uygulama limitini artırmışsınızdır ama vekil katmanındaki sınır hâlâ düşüktür ve istek uygulamaya hiç ulaşmaz.
Ne Zaman Gerekli Değil?
Tek bir uygulamanız varsa ve o uygulama zaten bir web sunucusu üzerinden çalışıyorsa, ek bir vekil katmanı gereksiz karmaşıklık üretebilir.
Ters vekil şu durumlarda anlamlıdır:
- Birden fazla bağımsız uygulama barındırıyorsanız
- Uygulamanız kendi web sunucusunu çalıştırıyorsa
- Merkezi güvenlik ve önbellek katmanı istiyorsanız
- Kesintisiz yayın yapmak istiyorsanız
İkinci madde en yaygın gerekçedir: kendi web sunucusuyla gelen uygulamaları doğrudan internete açmak yerine, önlerine bir vekil koymak hem güvenli hem esnek bir yapı kurar. Bu esneklik, VDS sunucu üzerinde birden fazla proje çalıştıranlar için belirleyici bir avantajdır.
Sonuç
Ters vekil, tek bir sunucuda birden fazla uygulamayı temiz adreslerle yayınlamanın standart yoludur — ama asıl değeri adres düzeninde değil güvenliktedir: arkadaki uygulamalar internete hiç açılmaz. Kurarken üç ayrıntıyı atlamayın: uygulamaların yalnızca yerel arayüzü dinlediğinden emin olun, vekilin ilettiği gerçek IP başlıklarını uygulamanızın okuyacak şekilde yapılandırın ve bu başlıklara yalnızca güvenilen vekilden geldiğinde inanın. Yükleme ve zaman aşımı limitlerini de her iki katmanda birden ayarlayın.
Sıkça Sorulan Sorular (SSS)
Ters vekil neden gerekli?
Birden fazla uygulamayı tek sunucuda temiz adreslerle yayınlar, SSL yönetimini tek noktada toplar ve en önemlisi arkadaki uygulamaların internete hiç açılmamasını sağlar. Ayrıca hız sınırlama ve önbellekleme gibi kuralları merkezî olarak tanımlarsınız.
Loglarımda tüm ziyaretçiler aynı IP'den görünüyor?
Vekil arkasındaki uygulama, isteğin gerçek kaynağını göremez. Vekilin gerçek IP bilgisini özel başlıklarla iletmesi ve uygulamanızın bunları okuyacak şekilde yapılandırılması gerekir. Bu başlıklara yalnızca güvendiğiniz vekilden geldiğinde inanın.
Uzun işlemlerim zaman aşımına uğruyor, neden?
Vekil beklemeyi bırakıp bağlantıyı kesmiştir — uygulama işini bitirmiş olsa bile yanıt ulaşmaz. Vekil katmanındaki yanıt bekleme süresini artırın veya daha iyisi, uzun süren işlemleri arka plana taşıyın.
Yükleme limitini artırdım ama hâlâ hata alıyorum?
Büyük ihtimalle uygulama limitini artırdınız ama vekil katmanındaki istek boyutu sınırı hâlâ düşük. Bu durumda istek uygulamaya hiç ulaşmaz. Limiti her iki katmanda birden ayarlayın.