DEV Community

Feyza Nur Dandal
Feyza Nur Dandal

Posted on

Nginx Nedir, Ne İçin Kullanılır ve Projelere Hangi Avantajları Sağlar?

Backend servisleri geliştirirken, bir API'yi yayına alırken veya Docker konteynerleri kurgularken yolunuzun Nginx (okunuşu: "Engine-X") ile kesişmeme ihtimali neredeyse yoktur.

İlk olarak 2004 yılında, o dönemin en büyük sunucu problemi olan C10K sorununu (tek bir sunucuda aynı anda 10.000 eşzamanlı bağlantıyı yönetebilme) çözmek için geliştirilen Nginx, bugün internetteki web sitelerinin %30'undan fazlasına güç veriyor.

Bu yazıda; Nginx'in arka planda tam olarak ne yaptığını, hangi durumlarda kullanıldığını ve projelere kattığı somut avantajları ele alıyoruz.

Nginx Nedir?

En basit tanımıyla Nginx; olay güdümlü (event-driven), asenkron mimariye sahip yüksek performanslı bir HTTP web sunucusu, ters proxy (reverse proxy) ve yük dengeleyicidir (load balancer).

Geleneksel web sunucuları gelen her bir HTTP isteği için sunucuda ayrı bir işlem (process) veya iş parçacığı (thread) açarken, Nginx olay güdümlü ve bloklanmayan (non-blocking) bir mimari kullanır. Bu sayede minimum CPU ve RAM tüketimiyle, tek bir sunucu çekirdeğinde bile binlerce bağlantıyı aynı anda tereyağından kıl çeker gibi yönetebilir.

+---> Node.js Uygulaması (Port 3000)
|
[Danışan/İstek] ---> Nginx -+---> ASP.NET Core API (Port 5000)
(Port 80/443)       |
+---> Statik Dosyalar (HTML/CSS/JS)
Enter fullscreen mode Exit fullscreen mode

Temel Kullanım Senaryoları: Nginx Ne İş Yapar?

1. Ters Proxy (Reverse Proxy)

Backend servislerinizi (Node.js, Go, .NET, Python vb.) doğrudan dış dünyaya açmak yerine önüne Nginx koyarsınız. Kullanıcı isteği önce Nginx'e gelir, Nginx isteği doğrular ve arkadaki ilgili servise yönlendirir.

Neden Önemli? Uygulamanızın iç portlarını gizler, güvenlik katmanı oluşturur ve SSL sertifikalarını tek merkezden yönetmenizi sağlar.

2. Yük Dengeleme (Load Balancing)

Projenizin trafiği arttığında ve tek bir backend sunucusu yetersiz kaldığında, Nginx gelen istekleri arkadaki birden fazla uygulama sunucusuna dağıtır (Round Robin, Least Connections vb. algoritmalarla). Böylece sisteminiz çökmeden yatayda ölçeklenebilir.

3. Statik İçerik Sunumu (Static Content Serving)

ASP.NET veya Express gibi uygulama çatıları dinamik kod çalıştırmak için tasarlanmıştır; resim, CSS veya JS dosyaları sunmak onların işi değildir. Nginx, statik dosyaları doğrudan diskten ışık hızında sunarak backend uygulamanızın üzerindeki gereksiz yükü alır.

4. SSL/TLS Sonlandırma (SSL Termination)

Sertifika kurulumlarını mikroservislerin her birinde ayrı ayrı yapmak yerine Nginx üzerinde yaparsınız. Nginx dış dünyayla HTTPS konuşur, kendi iç ağındaki servislerle ise hızlıca HTTP üzerinden haberleşir.

Nginx Kullanmanın Sağladığı Avantajlar

  • Düşük Kaynak Tüketimi: Binlerce anlık istek altında bile yok denecek kadar az RAM ve CPU kullanır.

  • Merkezi Güvenlik: İstekler henüz uygulamanıza ulaşmadan önce Nginx seviyesinde Hız Sınırlama (Rate Limiting), IP Engelleme ve DDoS koruması gibi önlemler alabilirsiniz.

  • Önbellekleme (Caching): Backend'den dönen dinamik yanıtları önbelleğe alabilir. Aynı istek tekrar geldiğinde veritabanına veya backend'e yük bindirmeden yanıtı anında sunar.

  • Gelişmiş Protokol Desteği: HTTP/2, HTTP/3 (QUIC), gRPC ve WebSocket protokollerini kutudan çıktığı gibi destekler.

Hangi Durumlarda Nginx Kullanmalısınız?

  • Mikroservis veya Konteyner Yapılarında: Docker ortamında çalışan farklı servisleri tek bir çıkış kapısından (Gateway) yönetmek istediğinizde.

  • Yüksek Trafikli Sistemlerde: API'nizin aynı anda binlerce kullanıcıya yanıt vermesi gerektiğinde.

  • Canlıya Alma (Production) Süreçlerinde: SSL sertifikası yönetimi, CORS başlıkları ve güvenlik ayarlarını profesyonelce kurgulamak istediğinizde.

Top comments (0)