Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Güvenlik Yönetim

Nginx Web Server Nedir? Kurulum, Yapılandırma ve En İyi Uygulamalara Yönelik Tam Rehber

Nginx (telaffuzu “engine-x”) internet üzerinde en yaygın şekilde dağıtılan web sunucularından biri haline gelmiştir — ve bunun iyi nedenleri vardır. Yüksek trafikli e-ticaret platformlarını güçlendirmekten karmaşık mikro hizmet mimarilerine ters proxy görevi görmesine kadar, Nginx hafif ve verimli bir pakette olağanüstü performans, ölçeklenebilirlik ve güvenlik sağlar.

Bu kapsamlı kılavuzda, Nginx’in tam olarak ne olduğunu, mimarisinin nasıl çalıştığını, Apache ile nasıl karşılaştırıldığını ve kendi sunucunuzda nasıl çalıştırılacağını — güvenlik ve performans en iyi uygulamaları da dahil olmak üzere — ayrıntılı olarak açıklayacağız.

Nginx Nedir?

Nginx, kullanıcılara internet üzerinden web sayfaları ve uygulama içeriği sunan ücretsiz, açık kaynaklı bir web sunucusu yazılımıdır. 2004 yılında Igor Sysoev tarafından “C10K problemi”ni (10.000 eşzamanlı bağlantıyı işleme) çözmek için yayınlanan Nginx, o zamandan beri dünya çapında milyonlarca web sitesi tarafından kullanılan tam özellikli bir platforma dönüşmüştür.

Nginx’i geleneksel web sunucularından ayıran şey, olay odaklı, asenkron, engellemeyen mimarisidir. Eski sunucuların yaptığı gibi gelen her istek için yeni bir thread veya process oluşturmak yerine, Nginx az sayıda worker process kullanarak binlerce eşzamanlı bağlantıyı minimum bellek ve CPU yükü ile işler.

Bu, Nginx’i basit bir statik web sitesini Paylaşımlı Web Hosting üzerinde çalıştırıyor olsanız veya yüksek kullanılabilirlik uygulama yığınını bir Dedicated Server üzerinde yönetiyor olsanız, ideal bir seçim haline getirir.

Nginx’in Temel Özellikleri

⚡ Yüksek Performans

Nginx, statik içerik — HTML dosyaları, CSS stil sayfaları, JavaScript paketleri, resimler ve video — sunmada olağanüstü derecede verimlidir ve çok düşük kaynak tüketimi ile çalışır. Ağır yük altında bile hızlı yanıt sürelerini korur.

⚖️ Yük Dengeleme

Nginx, gelen trafiği birden fazla arka uç sunucu arasında çeşitli algoritmalar (round-robin, en az bağlantı, IP hash) kullanarak dağıtabilir, kaynak kullanımını optimize eder ve tek hata noktalarını ortadan kaldırır.

🔁 Ters Proxy

Ters proxy olarak Nginx, arka uç uygulama sunucularınızın önünde yer alır, istemci isteklerini iletirken bu sunucuları doğrudan internet maruziyetinden korur. Bu, kritik bir güvenlik ve kontrol katmanı ekler.

🔒 SSL/TLS Sonlandırması

Nginx, SSL/TLS şifrelemesini yerel olarak işler, şifrelemenin hesaplama yükünü uygulama sunucularınızdan alır. Nginx’i güvenilir bir SSL Sertifikası ile eşleştirmek, aktarımdaki tüm verilerin şifrelenmiş olmasını ve sitenizin kullanıcıların ve arama motorlarının beklediği güven sinyallerini kazanmasını sağlar.

🌐 Geniş Uygulama Uyumluluğu

Nginx, PHP (PHP-FPM aracılığıyla), Python (Django, Flask), Ruby on Rails, Node.js ve Go dahil olmak üzere modern programlama dilleri ve çerçeveleriyle sorunsuz bir şekilde entegre olur.

🗜️ Gzip Sıkıştırması ve Önbelleğe Alma

Gzip sıkıştırması ve yanıt önbelleğe alma için yerleşik destek, bant genişliği kullanımını önemli ölçüde azaltır ve son kullanıcılara içerik sunumunu hızlandırır.

Nginx Nasıl Çalışır? Mimariye Anlamak

Nginx neden bu kadar iyi performans gösterdiğini takdir etmek için, iç modelini anlamak yardımcı olur.

Olay Tabanlı, Engellemeyen I/O

Apache’nin eski sürümleri gibi geleneksel web sunucuları bağlantı başına işlem veya bağlantı başına iş parçacığı modelini kullanır. Her yeni istek yeni bir işlem veya iş parçacığı oluşturur, bu da bellek ve CPU tüketir. Yüksek eşzamanlılık altında, bu yaklaşım iyi ölçeklenmiyor.

Nginx temelden farklı bir yaklaşım benimser:

  1. Tek bir ana işlem yapılandırmayı okur ve çalışan işlemleri yönetir.
  2. Birden fazla çalışan işlem (tipik olarak CPU çekirdeği başına bir tane) engellemeyen I/O ve bir olay döngüsü kullanarak binlerce bağlantıyı işler.
  3. Bir çalışan yavaş bir işlemi (disk okuma veya upstream yanıtı gibi) beklerken, boşta oturmaz — kuyrukta diğer olayları işler.

Bu mimari, tek bir Nginx örneğinin onbinlerce eşzamanlı bağlantıyı işlemesine izin verirken, iş parçacığı tabanlı bir sunucunun gerektireceği belleğin bir kısmını tüketir.

İstek İşleme Akışı

Client Request
      ↓
Nginx (Master Process)
      ↓
Worker Process (Event Loop)
      ↓
Static File? → Serve directly from disk
      ↓
Dynamic Content? → Forward to upstream (PHP-FPM, Node.js, etc.)
      ↓
Response returned to client

Nginx’in Yaygın Kullanım Alanları

Kullanım AlanıAçıklama
Web SunucusuStatik ve dinamik web sitelerini yüksek hız ve güvenilirlikle sunma
Ters Proxyİstekleri arka uç uygulama sunucularına yönlendirme, güvenlik ve performansı iyileştirme
Yük DengeleyiciTrafiği sunucu havuzları arasında dağıtma, yüksek kullanılabilirlik sağlama
API Ağ GeçidiAPI trafiğini yönetme, yönlendirme ve mikro hizmetlere kısıtlama uygulama
Medya AkışıVideo ve ses içeriğini verimli şekilde akışla sunma
SSL SonlandırmaHTTPS şifrelemesini işleme ve istekleri arka uç sunuculara iletme

Nginx vs. Apache: Hangisini Seçmelisiniz?

Hem Nginx hem de Apache üretim sınıfı web sunucularıdır, ancak farklı senaryolara uyarlar. İşte doğrudan bir karşılaştırma:

ÖzellikNginxApache
MimariOlay tabanlı, asenkronİşlem/thread tabanlı
Statik İçerikSon derece hızlıOrta düzey
Dinamik İçerikHarici işlemciler aracılığıyla (PHP-FPM)Modüller aracılığıyla yerel (mod_php)
EşzamanlılıkMükemmel (binlerce bağlantı)İyi, ancak daha ağır kaynak kullanımı
YapılandırmaMerkezi, temiz sözdizimiDağıtılmış (.htaccess desteği)
Modül EkosistemiBüyüyen, derlenmişKapsamlı, dinamik olarak yüklenebilir
Bellek KullanımıDüşükYük altında daha yüksek
En İyi Kullanım AlanıYüksek trafikli siteler, proxy, API’lerPaylaşılan hosting, eski uygulamalar

Sonuç: Yüksek trafikli web siteleri, ters proxy kurulumları ve modern uygulama yığınları için Nginx genellikle daha iyi bir seçimdir. Apache, .htaccess dosyalarına veya belirli Apache modüllerine büyük ölçüde bağlı ortamlarda popüler olmaya devam etmektedir.

Nginx’in gücünü kullanıcı dostu bir yönetim arayüzüyle istiyorsanız, cPanel ile VPS seçmeyi veya AlexHost’un barındırma çözümleriyle sunulan VPS Kontrol Panelleri‘nin tam aralığını keşfetmeyi düşünün.

Linux’te Nginx Nasıl Kurulur ve Yapılandırılır

Linux sunucusunda Nginx’in tam ve pratik bir kurulumunu adım adım gerçekleştirelim.

Ön Koşullar

  • Ubuntu, Debian, CentOS veya RHEL çalıştıran bir Linux sunucusu
  • Root veya sudo erişimi
  • Kayıtlı bir alan adı (AlexHost aracılığıyla alan adı kaydedebilirsiniz)

Adım 1: Nginx’i Kurun

Ubuntu / Debian’da:

sudo apt update
sudo apt install nginx -y

CentOS / RHEL’de:

sudo yum install epel-release -y
sudo yum install nginx -y

Adım 2: Nginx’i Başlatın ve Etkinleştirin

Hizmeti başlatın ve sistem önyüklemesinde otomatik olarak başlaması için yapılandırın:

sudo systemctl start nginx
sudo systemctl enable nginx

Çalışıp çalışmadığını doğrulayın:

sudo systemctl status nginx

Çıktıda active (running) görmelisiniz. Ayrıca sunucunuzun IP adresini bir tarayıcıda açabilirsiniz — varsayılan Nginx hoş geldiniz sayfasını göreceksiniz.

Adım 3: Güvenlik Duvarını Yapılandırın

HTTP ve HTTPS trafiğine güvenlik duvarınız aracılığıyla izin verin:

UFW (Ubuntu/Debian):

sudo ufw allow 'Nginx Full'
sudo ufw reload

Firewalld (CentOS/RHEL):

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Adım 4: Nginx Yapılandırma Yapısını Anlayın

Nginx’in yapılandırması aşağıdaki şekilde organize edilmiştir:

/etc/nginx/
├── nginx.conf              ← Main configuration file
├── sites-available/        ← Virtual host config files (inactive)
│   └── example.com
├── sites-enabled/          ← Symlinks to active virtual hosts
│   └── example.com → ../sites-available/example.com
├── conf.d/                 ← Additional configuration snippets
└── snippets/               ← Reusable config fragments

Ana nginx.conf dosyası genel ayarları (worker işlemleri, günlüğe kaydetme, MIME türleri) tanımlarken, bireysel server blokları (Nginx’in Apache’nin Sanal Konakları’na eşdeğeri) her alan adı veya uygulamanın nasıl işlendiğini tanımlar.

Adım 5: Alan Adınız İçin Bir Sunucu Bloğu Oluşturun

Web siteniz için yeni bir yapılandırma dosyası oluşturun:

sudo nano /etc/nginx/sites-available/example.com

Aşağıdaki yapılandırmayı yapıştırın (example.com yerine gerçek alan adınızı yazın):

server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html index.htm index.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

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

Sembolik bir bağlantı oluşturarak siteyi etkinleştirin:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Söz dizimi hataları için yapılandırmayı test edin:

sudo nginx -t

Değişiklikleri uygulamak için Nginx’i yeniden yükleyin:

sudo systemctl reload nginx

Adım 6: Web Kök Dizininizi Oluşturun

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html
echo "<h1>Welcome to example.com</h1>" > /var/www/example.com/html/index.html

Adım 7: SSL/TLS ile HTTPS’i Etkinleştirin

Sitenizi HTTPS üzerinden sunmak güvenlik, SEO ve kullanıcı güveni için zorunludur. Ücretsiz SSL eklemenin en kolay yolu Certbot (Let’s Encrypt) aracılığıyladır:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

Certbot, Nginx sunucu bloğunuzu otomatik olarak HTTPS’i işlemek ve otomatik sertifika yenilemeyi ayarlamak için değiştirecektir.

Üretim ortamları ve e-ticaret siteleri için, genişletilmiş doğrulama ve garanti kapsamı için premium bir SSL Sertifikası düşünün.

Nginx Yaygın Senaryolar İçin Yapılandırması

Ters Proxy Yapılandırması

İstekleri port 3000’de çalışan bir Node.js uygulamasına ilet:

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;
    }
}

Yük Dengeleme Yapılandırması

Trafiği üç arka uç sunucusu arasında dağıt:

upstream backend_pool {
    least_conn;  # Use least-connections algorithm
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}

server {
    listen 80;
    server_name example.com;

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

PHP-FPM Entegrasyonu

Bir PHP uygulamasını (örn. WordPress) sunun:

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

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    location ~ /.ht {
        deny all;
    }
}

Nginx için Güvenlik En İyi Uygulamaları

Nginx kurulumunuzu güvence altına almak, onu doğru şekilde yapılandırmak kadar önemlidir. Bu sertleştirme adımlarını izleyin:

1. Nginx Sürüm Bilgisini Gizle

Sunucu sürümünüzü açığa çıkarmak, saldırganların bilinen güvenlik açıklarını hedeflemesine yardımcı olur. Bunu devre dışı bırakın:

# In the http block of nginx.conf
server_tokens off;

2. Güçlü Şifre Paketleri ile SSL/TLS’yi Etkinleştir

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;

3. Güvenlik Başlıkları Ekle

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

4. İstek Boyutunu ve Hızını Sınırla

DDoS saldırılarına ve kötüye kullanıma karşı koruma sağla:

# Limit body size (e.g., for file uploads)
client_max_body_size 10M;

# Rate limiting zone
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

# Apply rate limiting to a location
location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
}

5. IP Beyaz Listesi ile Erişimi Kısıtla

location /admin/ {
    allow 203.0.113.0/24;   # Your office IP range
    deny all;
}

6. Gereksiz HTTP Yöntemlerini Devre Dışı Bırak

if ($request_method !~ ^(GET|HEAD|POST)$) {
    return 444;
}

Performans Optimizasyonu En İyi Uygulamaları

Gzip Sıkıştırmasını Etkinleştirin

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;

Tarayıcı Önbelleğini Yapılandırın

location ~* .(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

HTTP/2’yi Etkinleştirin

HTTP/2, multiplexing ve başlık sıkıştırması aracılığıyla sayfa yükleme performansını önemli ölçüde iyileştirir:

listen 443 ssl http2;

Worker Süreçlerini Ayarlayın

# In nginx.conf
worker_processes auto;          # Match number of CPU cores
worker_connections 1024;        # Max connections per worker
use epoll;                      # Efficient event model on Linux
multi_accept on;                # Accept multiple connections at once

Nginx İzleme

Bu araçlar ve tekniklerle Nginx sunucunuzun sağlığını kontrol edin:

Nginx Durum Modülünü Etkinleştirin

location /nginx_status {
    stub_status on;
    allow 127.0.0.1;
    deny all;
}

Yerel olarak erişin:

curl http://127.0.0.1/nginx_status

Yararlı Log Analiz Komutları

# View real-time access logs
sudo tail -f /var/log/nginx/access.log

# Find the top 10 most requested URLs
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

# Find the top 10 IP addresses by request count
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

Nginx için Doğru Hosting Seçimi

Nginx, adanmış kaynaklar ve yapılandırmayı ayarlamak için tam root erişimine sahip olduğunda en iyi performansı gösterir. İşte hosting ortamınızı ihtiyaçlarınızla eşleştirmek için hızlı bir kılavuz:

SenaryoÖnerilen Hosting
Kişisel blog veya küçük web sitesiPaylaşımlı Web Hosting
Büyüyen işletme sitesi veya uygulamasıVPS Hosting
Yüksek trafikli platform veya kurumsal uygulamaDedicated Servers
Nginx proxy’si ile AI/ML iş yükleriGPU Hosting

AlexHost’un VPS Hosting planları ile tam root erişim, SSD destekli depolama ve Nginx’i uygulamanızın talep ettiği şekilde kurma ve yapılandırma esnekliği elde edersiniz — trafiğiniz arttıkça ölçeklendirmek için performans kapasitesi ile.

Nginx Hakkında Sık Sorulan Sorular

S: Nginx ücretsiz mi?

Evet. Nginx açık kaynaklı ve BSD benzeri lisans altında mevcuttur. Ticari bir sürüm olan Nginx Plus, ek kurumsal özellikler ve resmi destek sunmaktadır.

S: Nginx ve Apache aynı sunucuda çalışabilir mi?

Evet. Yaygın bir mimari, Nginx’i 80/443 portunda ters proxy olarak kullanır ve istekleri dahili bir portta (örneğin 8080) çalışan Apache’ye iletir.

S: Nginx ile Nginx Plus arasındaki fark nedir?

Nginx (açık kaynak) kullanım durumlarının büyük çoğunluğunu kapsar. Nginx Plus, aktif sağlık kontrolleri, canlı aktivite izleme panosu, JWT kimlik doğrulaması ve ticari destek gibi özellikler ekler.

S: Nginx’i kapalı kalma süresi olmadan nasıl yeniden yüklerim?

sudo nginx -s reload veya sudo systemctl reload nginx kullanın. Bu, yapılandırmayı zarif bir şekilde yeniden yükler ve etkin bağlantıları kesmez.

S: Nginx Windows’u destekliyor mu?

Evet, ancak Windows sürümünün sınırlamaları vardır ve üretim kullanımı için önerilmez. Linux, Nginx için standart üretim ortamıdır.

Sonuç

Nginx sadece bir web sunucusundan çok daha fazlasıdır — içerik sunmak, istekleri yönlendirmek, yükü dengelemek, uygulamaları güvenli hale getirmek ve API trafiğini yönetmek için eksiksiz, yüksek performanslı bir platformdur. Olay tabanlı mimarisi, onu modern web altyapısının taleplerinin karşılanması için benzersiz şekilde uygun hale getirir; burada binlerce eşzamanlı bağlantıyı verimli bir şekilde işlemek bir lüks değil, temel bir gereksinimdir.

Basit bir statik site, PHP tabanlı bir CMS, bir Node.js API’si veya karmaşık bir mikro hizmetler mimarisi dağıtıyor olsanız da, Nginx hedeflerinizi desteklemek için hız, esneklik ve güvenlik özellikleri sağlar.

Bunu doğru hosting altyapısı ile eşleştirin — giriş seviyesi projeler için Paylaşımlı Web Hosting‘ten kurumsal iş yükleri için tam yönetilen Dedicated Sunucular‘a kadar — ve performans ve büyüme için inşa edilmiş bir temel elde edersiniz.