Nginx Nedir? Ne İşe Yarar?

Yaklaşık 3 dakikalık okuma

Nginx (“engine-x” diye okunur), açık kaynaklı bir web sunucusu yazılımıdır. Igor Sysoev tarafından, aynı anda on binlerce bağlantıyı verimli şekilde karşılayabilmek amacıyla geliştirildi ve ilk sürümü 2004 yılında yayımlandı. Bugün yalnızca bir web sunucusu olarak değil; ters vekil sunucu (reverse proxy), yük dengeleyici ve önbellek katmanı olarak da dünyanın en yaygın kullanılan sunucu yazılımlarından biridir.

Bu yazıda Nginx’in ne işe yaradığını, nasıl çalıştığını, Apache ile farklarını ve temel kullanımını anlatıyorum.

Nginx Ne İşe Yarar?

  • Web sunucusu: HTML, CSS, JavaScript ve görsel gibi statik dosyaları çok hızlı sunar.
  • Ters vekil (reverse proxy): Gelen istekleri arkadaki uygulamalara (PHP-FPM, Node.js, Python, Docker konteynerleri vb.) iletir; dış dünyaya tek bir giriş kapısı sağlar.
  • Yük dengeleme: Trafiği birden fazla sunucuya dağıtarak hem performansı hem de kesintisiz çalışmayı artırır.
  • SSL/TLS sonlandırma: HTTPS şifrelemesini üstlenir, arkadaki uygulamaların bu yükle uğraşmasına gerek kalmaz.
  • Önbellekleme: Sık istenen yanıtları saklayarak uygulama sunucusunun yükünü azaltır.

Nginx Nasıl Çalışır?

Nginx’i hızlı yapan şey olay güdümlü (event-driven), asenkron mimarisidir. Az sayıda “worker” süreci, her biri binlerce bağlantıyı aynı anda takip eder. Bir bağlantı veri beklerken süreç boşta beklemez, diğer bağlantılarla ilgilenmeye devam eder.

Klasik yaklaşımda ise her bağlantı için ayrı bir süreç veya iş parçacığı açılır. Bağlantı sayısı arttıkça bellek kullanımı da hızla artar. Nginx’in düşük kaynakla yüksek trafik karşılayabilmesi bu farktan gelir; bu yüzden Raspberry Pi gibi kısıtlı donanımlarda da rahatlıkla kullanılabilir.

Nginx ve Apache Karşılaştırması

Apache, Nginx’ten önce en yaygın web sunucusuydu ve hâlâ çok kullanılıyor. İkisi de olgun ve güvenilir yazılımlar; aralarındaki temel farklar şunlar:

ÖzellikNginxApache
MimariOlay güdümlü, asenkronModüler; süreç/iş parçacığı tabanlı modeller (prefork, worker, event)
Statik içerikÇok hızlı, düşük bellekHızlı, ancak yük altında daha fazla kaynak tüketir
Dinamik içerik (PHP)PHP-FPM gibi harici bir işlemciye iletirmod_php ile doğrudan veya PHP-FPM ile çalıştırabilir
YapılandırmaMerkezi yapılandırma dosyalarıMerkezi dosyalar + dizin bazlı .htaccess
Tipik kullanımYüksek trafik, reverse proxy, konteyner önüPaylaşımlı hosting, .htaccess gerektiren uygulamalar

Pratikte iki yazılım birlikte de kullanılabilir: Nginx önde statik dosyaları ve SSL’i karşılarken, arkada Apache dinamik içeriği işleyebilir.

Nginx Kurulumu (Debian / Ubuntu)

sudo apt update
sudo apt install nginx
systemctl status nginx

Kurulumdan sonra tarayıcıda sunucunun IP adresine gittiğinizde Nginx’in varsayılan karşılama sayfasını görürsünüz. Günlük kullanımda en çok işinize yarayacak komutlar:

sudo nginx -t                 # yapılandırmayı test eder
sudo systemctl reload nginx   # kesinti olmadan ayarları yeniden yükler
sudo systemctl restart nginx  # servisi yeniden başlatır

Yapılandırmayı değiştirdikten sonra her zaman önce nginx -t ile test edin; hatalı bir ayarla servisi yeniden başlatmak sitenin kapanmasına yol açabilir.

Basit Bir Yapılandırma Örneği

Aşağıdaki örnek, ornek.com adresine gelen istekleri /var/www/ornek dizinindeki dosyalarla karşılar; /api/ ile başlayan istekleri ise aynı sunucuda 3000 portunda çalışan bir uygulamaya iletir:

server {
    listen 80;
    server_name ornek.com;
    root /var/www/ornek;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location /api/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Debian tabanlı sistemlerde site yapılandırmaları genellikle /etc/nginx/sites-available/ altında tutulur ve /etc/nginx/sites-enabled/ altına bağlantı verilerek etkinleştirilir.

Bir Site Hangi Web Sunucusunu Kullanıyor?

Bir sitenin yanıt başlıklarındaki Server alanı çoğu zaman kullanılan sunucu yazılımını gösterir. Terminalden şu komutla kontrol edebilirsiniz:

curl -I https://ornek.com

Çıktıda server: nginx veya server: Apache gibi bir satır görürsünüz. Ancak Cloudflare gibi bir hizmetin arkasındaki sitelerde bu alan cloudflare olarak görünür; bazı yöneticiler de güvenlik amacıyla bu bilgiyi gizler. Tarayıcıda aynı bilgiye geliştirici araçlarının (F12) Ağ (Network) sekmesinden de ulaşabilirsiniz.

Sonuç

Nginx; hızlı, kaynak dostu ve çok yönlü bir sunucu yazılımıdır. Tek başına bir web sitesi yayınlamaktan, onlarca uygulamanın önünde tek bir HTTPS giriş noktası olmaya kadar pek çok rolü üstlenebilir. Bu blogun çalıştığı YunoHost da arka planda Nginx kullanır. Raspberry Pi üzerinde Nginx ile performansı artırma yöntemleri için bu rehbere göz atabilirsiniz.