İç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.

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

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