Nginx; statik içerik sunan, uygulama trafiğini backend’lere ileten ve TLS bağlantılarını sonlandırabilen bir web sunucusu ve reverse proxy‘dir. Olay tabanlı mimarisi çok sayıda eşzamanlı bağlantıyı yönetmeye uygundur. Bir kurumdaki asıl değer, trafik kurallarının uygulama kodundan ayrılarak denetlenebilir bir katmanda yönetilmesidir.
Nginx seçilirken dosya sunumu, HTTP proxy ve TCP/UDP stream işlevleri birbirinden ayrılmalıdır. İlgili modüllerin kurulu pakette bulunması ve uygulamanın protokol ihtiyaçlarını karşılaması gerekir. Apache ile performans karşılaştırması yapılacaksa Apache’nin MPM modeli ve iki taraftaki TLS/cache ayarları eşdeğer tutulmalıdır.
Mono’nun yaklaşımı
Mono ekibinin Nginx kurulumlarındaki standartları:
- TLS: İstemci uyumluluğuna göre TLS politikası; HSTS yalnızca HTTPS sürekliliği doğrulandıktan sonra. Preload ayrıca değerlendirilir, varsayılan değildir.
- Sıkıştırma:
gzipvebrotliikisi birden (Brotli içinngx_brotlimodülü);gzip_static/brotli_staticile pre-compressed dosyalar. - Cache: Uzun ömürlü immutable cache yalnızca sürümlenmiş dosyalarda; dinamik yanıtlar için kullanıcı ve oturum ayrımı doğrulanmış
proxy_cachepolitikası. - Güvenlik başlıkları:
Strict-Transport-Security,Content-Security-Policy,X-Frame-Options,X-Content-Type-Options,Referrer-Policy,Permissions-Policy- tek bir include dosyasında. - Rate limiting:
limit_req_zoneile endpoint-bazlı;limit_conn_zoneile IP başına bağlantı sınırı. - Logging: JSON format ile Loki/ELK’a gönderim; hassas veri (cookie/auth header) loglanmaz.
Tipik üretim mimarisi
Temel trafik akışı istemci → Nginx → uygulama backend’i şeklindedir. CDN veya ayrı yük dengeleyici ancak ihtiyaç varsa eklenir. PHP-FPM’e FastCGI, Tomcat gibi HTTP backend’lerine reverse proxy üzerinden bağlanılır. Kubernetes’te servis IP’sini duyurmak ile HTTP trafiğini yönlendirmek farklı işlerdir; MetalLB bir HTTP reverse proxy’nin yerine geçmez.
Kubernetes tarafında Nginx sunucusuyla Nginx tabanlı controller projeleri aynı şey değildir. Seçilen controller’ın bakım durumu, Gateway API/Ingress desteği ve sürüm uyumluluğu ayrıca kontrol edilir. Traefik de kendi yönlendirme ve servis keşif modeline sahiptir.
Yaygın sorunlar ve çözümler
- 502/504: Backend bağlantısı, uygulama hatası ve timeout ayrı incelenir; hata logu upstream süreleriyle eşleştirilir.
- 413: Upload sınırı uygulama ihtiyacına göre belirlenir; proxy ve uygulama sınırları tutarlı tutulur.
- Yüksek CPU: TLS, sıkıştırma, trafik hacmi ve konfigürasyon maliyeti ölçülmeden worker ayarları değiştirilmez.
- Bağlantı reddi: Dinleyen servis, dosya tanıtıcı sınırı ve kuyruk doluluğu kontrol edilir.
- TLS gecikmesi: Yeniden kullanım ve oturum politikası güvenlik gereksinimleriyle birlikte ölçülür; sabit kazanç yüzdesi varsayılmaz.
Nginx mi HAProxy mi Caddy mi?
| Beklenti | Karar kriteri |
|---|---|
| Statik içerik ve uygulama proxy’si | Nginx aynı katmanda iki rolü üstlenebilir. |
| Ayrıntılı yük dengeleme ve sağlık kontrolü | HAProxy ile protokol ve operasyon ihtiyaçları karşılaştırılır. |
| Otomatik HTTPS ve sade konfigürasyon | Caddy’nin sertifika yaşam döngüsü değerlendirilir. |
| Dinamik konteyner keşfi | Controller/provider entegrasyonu olan çözüm seçilir. |
Open Source ve Plus karşılaştırmasında ticari destek, sağlık kontrolleri ve yönetim özellikleri kullanılan sürüm için incelenir. Zamanla açık kaynak sürüme gelen özellikler nedeniyle eski bir karşılaştırma tablosu satın alma kararına tek başına dayanak olmamalıdır.
Güvenli değişiklik ve kapasite planlama
Bir proxy isteği hem istemci hem backend tarafında bağlantı tüketebilir. Bu nedenle worker_connections değeri doğrudan kullanıcı kapasitesi değildir. Dosya tanıtıcı limitleri, keepalive davranışı, uzun bağlantılar ve backend kapasitesi birlikte ölçülür. Daha fazla bağlantıya izin vermek, yavaş bir uygulamanın kuyruğunu büyüterek gecikmeyi artırabilir.
Konfigürasyon değişikliğinde önce sözdizimi kontrolü, sonra test alan adında davranış doğrulaması yapılır. Route önceliği, gerçek istemci IP’si ve uygulamanın ürettiği yönlendirmeler kontrol edilir. Önbelleğe alınan kişisel yanıtlar performans sorunu değil veri sızıntısıdır; Authorization ve cookie içeren akışlar özellikle test edilir. Mono’nun hedefi ölçümle gerekçelendirilmiş ayarlar, sürümlenen konfigürasyon ve anlaşılır bir geri dönüş prosedürüdür.

