Kullanıcı sitenize bağlandığında aslında ilk karşılaştığı şey çoğu zaman uygulamanızın kendisi değil, önünde duran bir reverse proxy'dir. Nginx, bu görevi üstlenen en yaygın yazılımlardan biridir: gelen istekleri karşılar, gerekeni kendisi yapar, gerisini arka plandaki uygulamaya iletir.
Reverse proxy ne yapar?
- HTTPS sonlandırma: Sertifikayı yönetir, şifreli bağlantıyı çözer ve uygulamaya iletir.
- Yönlendirme:
/apiisteklerini bir uygulamaya,/isteklerini başka birine gönderir. - Statik dosya sunumu: Görsel ve CSS gibi dosyaları uygulamayı yormadan doğrudan verir.
- Sıkıştırma ve önbellek: Yanıtları küçültür ve tekrar eden istekleri hızlandırır.
- Yük dengeleme: Aynı uygulamanın birden çok kopyası arasında trafiği dağıtır.
- Koruma: İstek boyutu, zaman aşımı ve basit hız sınırlama kuralları uygular.
Tipik yapı
Kullanıcı ──HTTPS──> Nginx (443) ──HTTP──> ASP.NET Core (localhost:5000)
Uygulama yalnızca sunucunun içinden erişilebilir bir portta dinler; internete açık olan tek kapı Nginx'tir.
Örnek yapılandırma
server {
listen 443 ssl;
http2 on;
server_name ornek.com;
ssl_certificate /etc/letsencrypt/live/ornek.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ornek.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name ornek.com;
return 301 https://$host$request_uri;
}
ASP.NET Core tarafında Forwarded Headers ara katmanını etkinleştirmek gerekir; aksi halde uygulama isteklerin HTTP ile geldiğini sanır, kullanıcı IP'lerini yanlış görür ve yönlendirmeler bozulur.
Sertifika yönetimi
Let's Encrypt ve Certbot ile ücretsiz sertifika alınıp otomatik yenilenebilir. Sertifika ömürlerinin sektör genelinde kademeli olarak kısaltıldığı düşünüldüğünde, otomatik yenileme ve yenilemenin izlenmesi artık zorunluluktur. Bkz. SSL sertifikası ve HTTPS.
Güvenlik başlıkları
HSTS, CSP ve benzeri başlıklar Nginx üzerinden tek noktadan eklenebilir. Ayrıntılar: HTTP güvenlik başlıkları.
Sık yapılan hatalar
- Uygulamayı
0.0.0.0üzerinde dinletip Nginx'i atlayarak doğrudan erişime açık bırakmak client_max_body_sizeayarını unutup dosya yüklemelerinde 413 hatası almak- Uzun süren rapor isteklerinde zaman aşımı ayarlarını yapmamak (504 hatası)
- Yapılandırmayı test etmeden yeniden yüklemek: önce
sudo nginx -t
Sık sorulan sorular
Kestrel doğrudan internete açılamaz mı?
Açılabilir; ancak aynı sunucuda birden çok site, merkezi sertifika yönetimi ve statik dosya önbelleği gibi ihtiyaçlarda reverse proxy hâlâ pratik bir tercihtir.
Nginx yerine ne kullanılabilir?
Caddy (otomatik HTTPS ile), Apache, Traefik (konteyner ortamlarında) ve Windows'ta IIS yaygın alternatiflerdir.
Sonuç
Reverse proxy, uygulamanızın önünde güvenlik, hız ve esneklik sağlayan bir kapıdır. Doğru yapılandırılmış bir Nginx, uygulama kodunu değiştirmeden pek çok iyileştirmeyi mümkün kılar.