VDS (Sanal Özel Sunucu) üzerinde birden fazla uygulama çalıştırırken, doğrudan web sunucunuzun arka plandaki uygulama sunucularına bağlanmasını sağlamak güvenlik ve performans açısından riskli olabilir. Reverse proxy, bu sorunu çözen ve aynı zamanda yük dengelemesi, önbelleğe alma ve güvenlik katmanı sağlayan güçlü bir araçtır. Bu rehberde, VDS üzerinde reverse proxy kurulumunun pratik yollarını ve faydalarını inceleyeceğiz.

Reverse Proxy Nedir ve Neden Gereklidir?

Reverse proxy, istemci isteklerini web sunucusu (Nginx veya Apache) tarafından karşılanan ve ardından arka plandaki uygulama sunucularına yönlendirilen bir ara katmandır. Doğrudan isteklerin Node.js, Gunicorn, PHP-FPM veya başka uygulamalarla konuşmasına engel olur. Bu yöntem, birkaç önemli avantaj sağlar:

  • Güvenlik katmanı: Arka planda çalışan uygulamaların IP adresi ve port numarası gizlenir
  • SSL/TLS işleme: Web sunucusu şifrelemeyi yönetir, arka uçta yapılmaz
  • Yük dengeleme: Gelen trafiği birden fazla uygulama örneğine dağıtır
  • Dinamik içerik önbelleğe alma: Sık erişilen verileri bellekte tutar
  • Performans: Web sunucusu ve uygulama sunucusu ayrı çalıştırılabilir

Nginx ile Reverse Proxy Yapılandırması

Nginx, VDS üzerinde reverse proxy kurmak için en hafif ve hızlı seçenektir. Aşağıdaki yapılandırma örneğinde, Node.js uygulamalarını Nginx üzerinden yönetiyoruz:

upstream app_servers {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://app_servers;
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;
}
}

Bu yapılandırmada upstream bloğu, uygulamanızın çalıştığı üç farklı portun tanımlandığını gösterir. Nginx otomatik olarak yuvarlak-robin yöntemiyle istekleri bu sunuculara dağıtır.

Apache ile Reverse Proxy Kurulumu

Apache kullanıyorsanız, mod_proxy ve mod_proxy_balancer modülleri reverse proxy ve yük dengelemeyi sağlar:

<VirtualHost *:80>
ServerName example.com
<Proxy balancer://mycluster>
BalancerMember http://127.0.0.1:8080
BalancerMember http://127.0.0.1:8081
ProxySet lbmethod=byrequests
</Proxy>
ProxyPreserveHost On
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>

Apache'nin bu yöntemi daha kaynak yoğundur ancak .htaccess desteği ve geniş modül ekosistemi sunmaktadır.

Health Check ve Otomatik Failover

VDS üzerinde production ortamında çalışan uygulamalar için, bir uygulama sunucusu çöktüğünde trafik otomatik olarak diğer sunuculardan akmalıdır. Nginx, max_fails ve fail_timeout parametreleriyle basit bir sağlık kontrolü sağlar:

upstream app_servers {
server 127.0.0.1:3000 max_fails=3 fail_timeout=30s;
server 127.0.0.1:3001 max_fails=3 fail_timeout=30s;
}

Daha gelişmiş sağlık kontrolleri için, arka uçta basit bir `/health` endpoint tanımlanır ve Nginx bunu düzenli olarak sorgular.

Dinamik İçerik Önbelleğe Alma

Reverse proxy sayesinde dinamik yanıtları da kısmen önbelleğe alabilirsiniz. Örneğin, API yanıtlarının belirli bir süre boyunca saklanması trafiği azaltır:

location /api/ {
proxy_pass http://app_servers;
proxy_cache my_cache;
proxy_cache_valid 200 5m;
proxy_cache_use_stale error timeout updating http_500 http_502;
}

Bu yapılandırma, 200 durum kodlu yanıtları 5 dakika boyunca önbelleğe alır ve arka uç çökmesi durumunda eski sürümleri sunmaya devam eder.

Güvenlik ve Başlık Yönetimi

Reverse proxy, istemciye geri göndermeden önce zararlı başlıkları filtreleyebilir. Ek olarak, X-Real-IP ve X-Forwarded-For başlıkları uygulamanın gerçek istemci IP adresini bilmesini sağlar. VDS üzerinde Fail2ban kullanırken bu başlıklar önemlidir:

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;

Performans İzleme ve Optimizasyon

VDS kaynakları sınırlı olduğundan, reverse proxy ayarlarını düzenli olarak izlemek gerekir. proxy_connect_timeout, proxy_send_timeout ve proxy_read_timeout değerleri uygulamanızın hızına göre ayarlanmalıdır. Çok düşük timeout değerleri hatalı bağlantılara, çok yüksek değerler ise kaynak tüketimine neden olabilir.

Reverse proxy, VDS üzerinde ölçeklenebilir ve güvenli bir ortam oluşturmanın temel yapı taşıdır. Doğru yapılandırma sayesinde, sınırlı kaynakları maksimum verimlilikle kullanabilir, arka uçtaki uygulamalar korunabilir ve istekler akıllıca dağıtılabilir. Bogahost VDS hizmetleriyle birlikte, bu tür advanced yapılandırmaları rahatlıkla yönetebilir ve yüksek performanslı bir altyapı kurabilirsiniz.