NGINX: Kapsamlı Rehber

NGINX Nedir? Genel Bakış ve Tarihçesi

NGINX, yüksek performanslı, açık kaynaklı bir web sunucusu, ters proxy (reverse proxy) ve yük dengeleyici (load balancer) olarak kullanılan bir yazılımdır. İlk olarak 2004 yılında Igor Sysoev tarafından geliştirilmiştir. Başlangıçta yüksek trafikli web siteleri için tasarlanmış olup, zamanla dünya çapında birçok büyük şirket tarafından kullanılmaya başlanmıştır.

NGINX ve Apache Karşılaştırması: Hangisi Daha İyi?

NGINX ve Apache, en popüler iki web sunucusudur. Apache işlem (thread) tabanlı çalışırken, NGINX olay (event-driven) tabanlıdır. Bu, NGINX’in daha az kaynak tüketerek yüksek performans göstermesini sağlar. Apache esneklik sunarken, NGINX özellikle yüksek trafikli web siteleri için daha iyi performans gösterir.

NGINX Nasıl Kurulur? (Linux, Windows ve macOS İçin)

  • Linux: sudo apt update && sudo apt install nginx
  • Windows: NGINX’in resmi web sitesinden indirilip, zip dosyası çıkarılarak çalıştırılabilir.
  • macOS: brew install nginx

NGINX Temel Yapılandırması: nginx.conf Dosyası

NGINX’in ana yapılandırma dosyası nginx.conf dosyasıdır. Bu dosyada aşağıdaki temel bölümler bulunur:

  • http {} bloğu HTTP sunucu ayarlarını içerir.
  • server {} bloğu belirli bir web sitesine özel ayarları içerir.
  • location {} bloğu belirli URL yollarını yönetir.

NGINX Reverse Proxy Nedir ve Nasıl Kullanılır?

Reverse proxy, istemciden gelen istekleri arka plandaki bir veya daha fazla sunucuya yönlendirir. Örnek bir yapılandırma:

server {
    listen 80;
    location / {
        proxy_pass http://localhost:3000;
    }
}

NGINX ile Load Balancing (Yük Dengeleme) Yapılandırması

NGINX, yük dengeleme için aşağıdaki yöntemleri sunar:

  • Round Robin: Gelen istekleri sırayla dağıtır.
  • Least Connections: En az bağlantıya sahip sunucuya yönlendirir.
  • IP Hash: Belirli IP’lerden gelen istekleri aynı sunucuya yönlendirir.

Örnek yapılandırma:

upstream backend {
    server server1.example.com;
    server server2.example.com;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

NGINX ve HTTP/2 Desteği: Performans Avantajları

NGINX, HTTP/2 desteği sunarak daha hızlı bağlantılar sağlar. Etkinleştirmek için:

server {
    listen 443 ssl http2;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
}

NGINX ile SSL/TLS Sertifikası Kurulumu ve HTTPS Ayarları

Let’s Encrypt ile ücretsiz SSL almak için:

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

NGINX ile Statik ve Dinamik İçerik Sunumu

NGINX, statik içerikleri doğrudan sunabilir ve dinamik içerikler için PHP-FPM, Node.js gibi sunuculara yönlendirme yapabilir.

NGINX ile PHP-FPM Kullanarak Dinamik Web Siteleri Çalıştırma

PHP-FPM desteği için yapılandırma örneği:

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

NGINX Cache Mekanizmaları: FastCGI, Proxy ve Static Caching

  • FastCGI Cache: PHP-FPM yanıtlarını önbelleğe alır.
  • Proxy Cache: Arka uç sunucuların yanıtlarını önbelleğe alır.
  • Static Cache: CSS, JS ve görüntü dosyalarını önbelleğe alır.

NGINX ile URL Yeniden Yazma (Rewrite) ve Yönlendirme (Redirect) Kuralları

Örnek yönlendirme kuralı:

rewrite ^/old-page$ /new-page permanent;

NGINX Güvenliği: DDoS Koruma, Rate Limiting ve Güvenlik Duvarı Ayarları

Rate limiting örneği:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;

NGINX ile WebSocket Desteği ve Gerçek Zamanlı İletişim

WebSocket bağlantıları için örnek yapılandırma:

location /ws/ {
    proxy_pass http://backend;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
}

NGINX Log Yönetimi ve Hata Takibi (access.log ve error.log)

Log dosyaları:

  • access.log: Gelen HTTP isteklerini kaydeder.
  • error.log: Hata mesajlarını kaydeder.

NGINX Modülleri: Kullanışlı 3. Parti Modüller ve Eklentiler

Popüler modüller:

  • ModSecurity: Web uygulama güvenlik duvarı.
  • PageSpeed: Sayfa hızını optimize eder.

NGINX Performans Optimizasyonu: Buffering, Compression ve Connection Ayarları

GZIP sıkıştırmasını etkinleştirme:

gzip on;
gzip_types text/plain application/json;

NGINX ve Docker: Container İçinde NGINX Çalıştırmak

Docker kullanarak NGINX çalıştırma:

docker run -d -p 80:80 nginx

NGINX ile WordPress, Laravel, Django ve Node.js Kurulumu

Her framework için özel yapılandırmalar gereklidir. Örneğin, WordPress için try_files kullanımı önemlidir.

NGINX ile Çoklu Domain (Virtual Host) Yapılandırması

server {
    server_name example1.com;
    root /var/www/example1;
}

server {
    server_name example2.com;
    root /var/www/example2;
}

Previous Article

SEO Uyumlu Yazılım Nasıl Yapılır?

Next Article

CloudLinux: Paylaşımlı Hosting İçin En İyi Çözüm

Yorum yaz

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir