15%

Tüm Hosting Hizmetlerinde %15 indirim

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

Kodu kullanın:

Skills
Başlayın
31.10.2024
1 +1

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

Nginx (pronounced "engine-x"), internet üzerinde en yaygın olarak 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 olarak hareket etmeye kadar, Nginx hafif ve verimli bir pakette olağanüstü performans, ölçeklenebilirlik ve güvenlik sunar.

Bu kapsamlı kılavuzda, Nginx'in tam olarak ne olduğunu, mimarisi 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, web sayfalarını ve uygulama içeriğini internet üzerinden kullanıcılara 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şlemek) çö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 her gelen istek için yeni bir iş parçacığı veya işlem oluşturmak yerine, Nginx az sayıda çalışan işlemi 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 da, yüksek kullanılabilirlik uygulaması yığınını Dedicated Server üzerinde yönetiyor olsanız da ideal bir seçim haline getirir.

Nginx'in Temel Özellikleri

⚡ Yüksek Performans

Nginx, statik içeriği — HTML dosyaları, CSS stil sayfaları, JavaScript paketleri, resimler ve video — çok düşük kaynak tüketimi ile sunmada istisnai derecede verimlidir. 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ç sunucusu 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 boşaltı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ı dramatik olarak azaltır ve son kullanıcılara içerik teslimini hızlandırır.

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

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

Olay Odaklı, 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ığı modeli 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çeklenmez.

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şlem (disk okuma veya arka uç yanıtı gibi) beklediğinde, boş 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 için Yaygın Kullanım Durumları

Kullanım DurumuAçıklama
Web SunucusuStatik ve dinamik web sitelerini yüksek hız ve güvenilirlikle sunun
Ters Proxyİstekleri arka uç uygulama sunucularına yönlendirin, güvenlik ve performansı iyileştirin
Yük DengeleyiciTrafiği sunucu havuzları arasında dağıtın, yüksek kullanılabilirlik için
API Ağ GeçidiAPI trafiğini mikro hizmetlere yönetin, yönlendirin ve kısıtlayın
Medya AkışıVideo ve ses içeriğini verimli bir şekilde akışla aktarın
SSL SonlandırmasıHTTPS şifrelemesini işleyin, istekleri arka uç sunucularına geçirmeden önce

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 odaklı, asenkronİşlem/iş parçacığı odaklı
Statik İçerikİstisnai derecede hızlıOrta
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
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ımYüksek trafikli siteler, proxy, API'lerPaylaşımlı hosting, eski uygulamalar

Sonuç: Yüksek trafikli web siteleri, ters proxy kurulumları ve modern uygulama yığınları için Nginx tipik olarak üstün seçimdir. Apache, .htaccess dosyalarına veya belirli Apache modüllerine yoğun şekilde bağlı ortamlarda popüler olmaya devam etmektedir.

Nginx'in gücünü kullanıcı dostu bir yönetim arayüzü ile istiyorsanız, cPanel ile VPS düşünün veya AlexHost'un barındırma çözümleriyle sunulan VPS Kontrol Panellerinin tam aralığını keşfedin.

Linux'ta Nginx Nasıl Kurulur ve Yapılandırılır

Linux sunucusunda Nginx'in tam ve pratik bir kurulumunu adım adım açıklayalım.

Ö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 Kurun

Ubuntu / Debian üzerinde:

sudo apt update
sudo apt install nginx -y

CentOS / RHEL üzerinde:

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şlatılacak şekilde 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 gibi 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ı (çalışan işlemleri, günlüğü, MIME türleri) tanımlarken, bireysel sunucu blokları (Nginx'in Apache'nin Sanal Hostları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özdizimi 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 vazgeçilmezdir. Ü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, HTTPS'i işlemek ve otomatik sertifika yenilemeyi ayarlamak için Nginx sunucu bloğunuzu otomatik olarak 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.

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

Ters Proxy Yapılandırması

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

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ın:

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

PHP uygulaması (örneğin 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üvenli hale getirmek, onu doğru şekilde yapılandırmak kadar önemlidir. Bu sertleştirme adımlarını izleyin:

1. Nginx Sürüm Bilgisini Gizleyin

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

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

2. Güçlü Şifre Paketleriyle SSL/TLS'i Etkinleştirin

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ı Ekleyin

###PPT_NO

15%

Tüm Hosting Hizmetlerinde %15 indirim

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

Kodu kullanın:

Skills
Başlayın