İçeriğe geç
BilgiKütüphanesi
Web Geliştirme

Nginx Nedir? Web Sunucusu, Ters Vekil ve Yük Dengeleyici

Nginx, olay tabanlı asenkron mimarisiyle çok sayıda eşzamanlı bağlantıyı düşük kaynakla karşılayan açık kaynaklı bir web sunucusudur. Statik içerik sunmanın yanı sıra ters vekil (reverse proxy), yük dengeleyici ve önbellek olarak da kullanılır; server ve location blokları üzerinden bildirimsel olarak yapılandırılır.

İlk yayın: 2 dk okuma1 kaynak

Nginx (telaffuzu "engine-x"), yüksek performansıyla tanınan açık kaynaklı bir web sunucusudur. İlk olarak çok sayıda eşzamanlı bağlantıyı verimli biçimde karşılama sorununu çözmek için geliştirildi ve zamanla sadece bir web sunucusu değil; ters vekil sunucu (reverse proxy), yük dengeleyici (load balancer) ve önbellek olarak da kullanılan çok amaçlı bir altyapı bileşeni haline geldi. Bugün dünyanın en çok trafik alan sitelerinin önemli bir bölümü Nginx üzerinde çalışır.

Neden Nginx? Olay tabanlı mimari

Nginx'in başarısının temelinde mimari bir tercih yatar. Eski nesil sunucular, gelen her bağlantı için ayrı bir süreç ya da iş parçacığı (thread) oluştururdu; binlerce eşzamanlı bağlantıda bu yaklaşım bellek ve işlemci açısından pahalıya mal olur. Nginx bunun yerine olay tabanlı, asenkron bir model kullanır: Az sayıda işçi süreç, çok sayıda bağlantıyı aynı anda, birini beklerken diğerine geçerek yönetir. Bu, Nginx'in düşük kaynak tüketimiyle on binlerce eşzamanlı bağlantıyı karşılayabilmesinin nedenidir.

Web sunucusu olarak

En temel görevinde Nginx, istemcilerden gelen HTTP isteklerini karşılar ve yanıt verir. Özellikle statik içerik (HTML, CSS, JavaScript, resim, video) sunmakta çok hızlıdır; dosyaları doğrudan diskten verimli biçimde istemciye iletir. Modern web uygulamalarında Nginx sıklıkla en önde durur, statik dosyaları kendisi servis eder ve dinamik istekleri arkadaki uygulama sunucusuna devreder.

Ters vekil sunucu (reverse proxy)

Nginx'in belki de en yaygın kullanımı ters vekil rolüdür. Bu rolde Nginx, istemci ile arkadaki gerçek uygulama sunucuları arasında durur: İstekleri alır, uygun arka uç servise iletir, yanıtı alıp istemciye geri verir. Bu yapı birçok fayda sağlar:

  • Arka uç sunucular doğrudan internete açık olmaz; tek giriş noktası Nginx'tir.
  • TLS/SSL şifrelemesi tek noktada (Nginx'te) sonlandırılabilir.
  • Farklı yollar (path) farklı servislere yönlendirilebilir.
  • Yanıtlar önbelleğe alınarak arka uç yükü azaltılabilir.

Yük dengeleyici (load balancer)

Trafik tek bir sunucunun kaldıramayacağı kadar arttığında, aynı uygulamanın birden fazla kopyası çalıştırılır. Nginx, gelen istekleri bu kopyalar arasında dağıtan bir yük dengeleyici olarak görev yapabilir. Dağıtım için farklı yöntemler sunar: Sırayla dağıtma (round-robin), en az bağlantısı olana yönlendirme ya da aynı istemciyi hep aynı sunucuya gönderme. Bir arka uç sunucu yanıt vermez hale gelirse Nginx onu devre dışı bırakıp trafiği sağlıklı olanlara yönlendirir.

Yapılandırma mantığı

Nginx, davranışını metin tabanlı yapılandırma dosyalarından okur. Yapılandırmanın merkezinde server blokları (hangi alan adı ve portu dinleyeceği) ve location blokları (hangi yolun nasıl işleneceği) vardır. Bu bildirimsel yapı sayesinde "şu alan adına gelen istekleri şu servise ilet, statik dosyaları şu klasörden ver, şu yolu şifrele" gibi kurallar açık ve okunabilir biçimde tanımlanır. Yapılandırma değiştirildiğinde Nginx, mevcut bağlantıları kesmeden ayarları yeniden yükleyebilir.

Nereden başlamalı?

Nginx öğrenmenin en pratik yolu, yerelde kurup önce basit bir statik site sunmak, ardından onu bir uygulama sunucusunun önüne ters vekil olarak yerleştirmektir. Nginx'in resmi belgeleri (nginx.org), yapılandırma yönergelerini, ters vekil ve yük dengeleme örneklerini ayrıntılı biçimde sunar ve yapılandırma söz dizimini öğrenmek için en güvenilir kaynaktır. Temel server/location mantığını kavramak, Nginx'in geri kalan tüm yeteneklerinin kapısını açar.

Benzer İçerikler