İçeriğe geç
Nginx

Nginx; olay tabanlı (event-driven) mimarisi sayesinde yüksek eşzamanlı bağlantıları düşük bellekle yönetebilen, dünyada en çok kullanılan web sunucusu, ters proxy ve yük dengeleyicidir. Igor Sysoev tarafından 2002’de C2K problemine (10K eşzamanlı bağlantı) karşı yazılmış; bugün dünya web sitelerinin %30’undan fazlasını sunmaktadır.

Geleneksel Apache HTTPd’nin “her bağlantıya bir process/thread” modelinin aksine, Nginx tek bir worker’ın binlerce eşzamanlı bağlantıyı non-blocking I/O ile yönettiği bir mimari kullanır. Bu, modern statik sunum, ters proxy ve yük dengeleme yükleri için ideal bir profil oluşturur.

Mono’nun yaklaşımı

Mono ekibinin Nginx kurulumlarındaki standartları:

  • TLS: TLS 1.2 minimum, TLS 1.3 etkin; ECDHE + AEAD şifrelemeler; HSTS + preload; OCSP stapling.
  • Sıkıştırma: gzip ve brotli ikisi birden (Brotli için ngx_brotli modülü); gzip_static/brotli_static ile pre-compressed dosyalar.
  • Cache: Statik dosyalar için expires 1y immutable, dinamik için proxy_cache + stale-while-revalidate.
  • 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_zone ile endpoint-bazlı; limit_conn_zone ile 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

Tipik bir kurulum: CDN/CloudflareHAProxy/MetalLB (L4) → Nginx (L7 reverse proxy + TLS terminasyonu + cache) → uygulama backend’i (Tomcat/PHP-FPM/Node.js/Go). Static asset’ler aynı Nginx tarafından try_files ile sunulur; cache miss durumunda backend’e geri-validate.

K8s ortamında Nginx-Ingress Controller veya Traefik kullanılır; her ikisi de Nginx upstream stratejilerine yakındır.

Yaygın sorunlar ve çözümler

  • 502/504 Bad Gateway: Backend ölçeklendirme zayıflığı veya proxy_read_timeout çok düşük. p99 latency’e göre timeout’u kalibre edin.
  • 413 Request Entity Too Large: client_max_body_size artırılır (default 1M, dosya yüklemeleri için yetersiz).
  • Worker high CPU: accept_mutex off, multi_accept on, events { use epoll; } ayarları kontrol edilir.
  • Connection refused (sysctl): net.core.somaxconn ve nginx.conf‘ta listen ... backlog=4096 paralel artırılmalı.
  • TLS handshake gecikmesi: Session ticket + session cache (ssl_session_cache shared:SSL:50m) ile %30’a varan iyileşme.

İlgili hizmetlerimiz

Sıkça sorulan sorular

Nginx mi Caddy mi Traefik mi?
Nginx olgunluk + ekosistem; Caddy otomatik HTTPS + sade konfigürasyon; Traefik Kubernetes/Docker-native dinamik routing. Geleneksel VM kurulumlarında Nginx, K8s ingress için Traefik veya Nginx-Ingress, geliştirici-friendly olmasını isteyen küçük ekipler için Caddy.
Nginx Open Source mu Plus mu?
Çoğu use-case için Open Source yeterli. Plus (ticari) sadece dinamik upstream konfigürasyonu, active health check, JWT auth, state sharing gibi özelliklere ihtiyaç duyan kurumlar için anlamlı. Mono müşterilerimizin %95’inde OSS yeterli.
TLS sertifikalarını nasıl yönetelim?
VM’lerde certbot/acme.sh + cron; K8s’te cert-manager + Let’s Encrypt veya kurumsal CA. Mono varsayılanı: OCSP stapling açık, TLS 1.2+ zorunlu, eski şifrelemeler kapalı, HSTS preload listesinde.
Yüksek trafikte nasıl ayarlamalıyız?
worker_processes auto, worker_connections 65536, keepalive_requests 1000, keepalive_timeout 65. Upstream tarafında keepalive 64. Sysctl seviyesinde net.core.somaxconn, net.ipv4.tcp_max_syn_backlog, ephemeral port aralığı ayarlanır.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.