Skip to content
Bloga dön
Rehber Nginx Statik Site Web Sunucu Performans Güvenlik SSL Caching Linux Mistral

Nginx ile Statik Site Yayınlama: Performans Optimizasyonu ve Güvenlik İpuçları

Bu rehberde, Nginx kullanarak statik sitelerinizi nasıl hızlı, güvenli ve ölçeklenebilir şekilde yayınlayabileceğinizi adım adım öğreneceksiniz. Temel yapılandırmadan başlayarak, performans optimizasyonu, SSL sertifikaları, caching ve güvenlik duvarı entegrasyonuna kadar tüm detayları ele alıyoruz.

Caner Serbest

Sistem ve Altyapı

6 dk okuma

Nginx ile Statik Site Yayınlama: Performans Optimizasyonu ve Güvenlik İpuçları

Statik siteler, modern web geliştirmenin temel taşlarından biri haline geldi. Hızlı yüklenme süreleri, düşük sunucu maliyetleri ve güvenlik avantajları sayesinde hem geliştiriciler hem de işletmeler tarafından tercih ediliyor. Bu rehberde, Nginx kullanarak statik sitelerinizi nasıl yayınlayabileceğinizi, performansını nasıl optimize edeceğinizi ve güvenliği nasıl artıracağınızı detaylı bir şekilde inceleyeceğiz.


1. Nginx Nedir ve Neden Statik Siteler İçin İdeal?

Nginx, yüksek performanslı bir web sunucusu ve ters proxy olarak bilinir. Statik siteler için ideal olmasının başlıca nedenleri şunlardır:

  • Düşük Bellek Kullanımı: Nginx, Apache gibi diğer web sunucularına kıyasla daha az bellek tüketir.
  • Yüksek Eşzamanlılık: Binlerce bağlantıyı aynı anda yönetebilir.
  • Basit Yapılandırma: Statik dosyaları sunmak için karmaşık ayarlara gerek yoktur.
  • Güvenlik: PHP gibi dinamik içeriklerin aksine, statik dosyalar daha az saldırı yüzeyine sahiptir.

Nginx’in Avantajları: İstatistiksel Veriler

  • Yükleme Süresi: Nginx ile statik siteler, Apache’ye göre %30-50 daha hızlı yüklenir (Kaynak: WebPageTest).
  • Bellek Kullanımı: Nginx, Apache’ye göre %40 daha az bellek tüketir (Kaynak: NGINX Inc.).
  • Eşzamanlı Bağlantı Sayısı: Nginx, 10.000’e kadar bağlantıyı aynı anda yönetebilir (Kaynak: Nginx Belgeleri).

2. Nginx Kurulumu ve Temel Yapılandırma

Adım 1: Nginx Kurulumu

Nginx’i Ubuntu/Debian tabanlı sistemlere aşağıdaki komutlarla kurabilirsiniz:

# Paket listesini güncelleyin
sudo apt update

# Nginx'i kurun
sudo apt install nginx -y

# Hizmeti başlatın
sudo systemctl start nginx

# Sistem başlangıcında otomatik olarak başlamasını sağlayın
sudo systemctl enable nginx

Kurulum tamamlandıktan sonra, tarayıcınızda http://sunucu-ip-adresi adresine giderek varsayılan Nginx sayfasını görebilirsiniz.

Adım 2: Temel Nginx Yapılandırması

Nginx’in ana yapılandırma dosyası /etc/nginx/nginx.conf konumundadır. Ancak, statik siteler için genellikle site-specific yapılandırmalar kullanılır. Bu dosyalar /etc/nginx/sites-available/ dizininde bulunur.

Öncelikle, varsayılan yapılandırmayı kaldırın:

sudo rm /etc/nginx/sites-enabled/default

Şimdi, yeni bir yapılandırma dosyası oluşturun:

sudo nano /etc/nginx/sites-available/static-site.conf

Aşağıdaki içeriği ekleyin (örnek olarak example.com alan adını kullanıyoruz):

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

    root /var/www/static-site;
    index index.html;

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

Adım 3: Yapılandırmayı Etkinleştirme

Yapılandırma dosyasını sites-enabled dizinine sembolik bir bağlantı olarak ekleyin:

sudo ln -s /etc/nginx/sites-available/static-site.conf /etc/nginx/sites-enabled/

Son olarak, Nginx’i yeniden yükleyin:

sudo nginx -t  # Yapılandırmayı test edin
sudo systemctl reload nginx  # Nginx'i yeniden yükleyin

3. Statik Siteyi Nginx’e Dağıtma

Statik sitenizi Nginx’e dağıtmak için aşağıdaki adımları izleyin:

Adım 1: Statik Dosyaları Hazırlama

Statik sitenizin dosyalarını (index.html, style.css, script.js, vb.) /var/www/static-site dizinine kopyalayın:

sudo mkdir -p /var/www/static-site
sudo chown -R $USER:$USER /var/www/static-site

# Örnek: Bir statik site oluşturun (örneğin, bir HTML dosyası)
echo "<h1>Merhaba, Nginx!</h1>" | sudo tee /var/www/static-site/index.html

Adım 2: Dosya İzinlerini Ayarlama

Nginx’in statik dosyalara erişebilmesi için doğru izinleri ayarlayın:

sudo chmod -R 755 /var/www/static-site
sudo chown -R www-data:www-data /var/www/static-site

Adım 3: Nginx’i Test Edin

Tarayıcınızda http://example.com adresine giderek sitenizin çalıştığını doğrulayın.


4. Performans Optimizasyonu

Statik sitelerin performansını artırmak için aşağıdaki teknikleri kullanabilirsiniz:

1. Gzip Sıkıştırma

Nginx, HTTP yanıtlarını sıkıştırarak aktarım süresini azaltabilir. Bunu /etc/nginx/nginx.conf dosyasına aşağıdaki satırları ekleyerek yapabilirsiniz:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1000;
gzip_proxied any;
gzip_vary on;

Daha sonra Nginx’i yeniden yükleyin:

sudo systemctl reload nginx

2. Tarayıcı Önbelleği (Browser Caching)

Statik dosyaların tarayıcıda önbelleğe alınmasını sağlayarak, tekrarlanan ziyaretlerde yükleme süresini azaltabilirsiniz. /etc/nginx/sites-available/static-site.conf dosyasına aşağıdaki satırları ekleyin:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|woff|ttf)$ {
    expires 365d;
    add_header Cache-Control "public, no-transform";
}

3. HTTP/2 Desteği

HTTP/2, çoklu bağlantıları tek bir bağlantı üzerinden yöneterek performansı artırır. Nginx’de HTTP/2 desteğini etkinleştirmek için /etc/nginx/sites-available/static-site.conf dosyasına aşağıdaki satırı ekleyin:

listen 443 ssl http2;

4. Keep-Alive Süresini Artırma

Keep-Alive, aynı bağlantının birden fazla HTTP isteği için kullanılmasını sağlar. Bu süreyi artırarak performansı iyileştirebilirsiniz. /etc/nginx/nginx.conf dosyasına aşağıdaki satırı ekleyin:

keepalive_timeout 65;

5. Güvenlik İpuçları

Statik sitelerin güvenliğini artırmak için aşağıdaki adımları izleyin:

1. SSL Sertifikası Kurulumu (HTTPS)

Statik sitelerinizde HTTPS kullanmak, verilerinizi korumanın yanı sıra Google sıralamalarını da olumlu etkiler. Ücretsiz SSL sertifikaları için Let’s Encrypt kullanabilirsiniz.

Adım 1: Certbot Kurulumu

sudo apt install certbot python3-certbot-nginx -y

Adım 2: SSL Sertifikası Alın

sudo certbot --nginx -d example.com -d www.example.com

Certbot, otomatik olarak Nginx yapılandırmasını güncelleyerek HTTPS’yi etkinleştirecektir.

Adım 3: Otomatik Yenileme Ayarı

Let’s Encrypt sertifikaları 90 günlük bir süreye sahiptir. Otomatik yenileme için bir cron job ekleyin:

sudo crontab -e

Aşağıdaki satırı ekleyin:

0 3 * * * /usr/bin/certbot renew --quiet

2. Güvenlik Duvarı (UFW) Kuralları

Statik sitelerinizi korumak için UFW (Uncomplicated Firewall) kullanabilirsiniz. Aşağıdaki kuralları uygulayın:

# HTTP ve HTTPS için izin ver
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# SSH için sadece belirli IP’lerden erişime izin ver (güvenlik için)
sudo ufw allow from 192.168.1.100 to any port 22

# UFW’yi etkinleştir
sudo ufw enable

3. Nginx Güvenlik Ayarları

Nginx’in güvenliğini artırmak için /etc/nginx/nginx.conf dosyasına aşağıdaki ayarları ekleyin:

# Sunucu imzasını gizleyin
server_tokens off;

# Güvensiz HTTP yöntemlerini engelleyin
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 405;
}

# Kök dizininde dizin listesi engelleyin
location / {
    autoindex off;
}

6. Ölçeklenebilirlik ve Yük Dengeleme

Eğer statik siteniz yüksek trafik alıyorsa, yük dengeleme (load balancing) ve ölçeklenebilirlik için aşağıdaki çözümleri düşünebilirsiniz:

1. Nginx ile Yük Dengeleme

Nginx, basit bir yük dengeleyici olarak kullanılabilir. /etc/nginx/nginx.conf dosyasına aşağıdaki yapılandırmayı ekleyin:

upstream backend {
    server 192.168.1.100;
    server 192.168.1.101;
    server 192.168.1.102;
}

server {
    listen 80;
    server_name example.com;

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

2. CDN Kullanımı

Cloudflare, CloudFront veya BunnyCDN gibi CDN hizmetleri, statik dosyalarınızın dünya genelinde hızlı bir şekilde dağıtılmasını sağlar. CDN kullanarak:

  • Yükleme sürelerini %50’ye kadar azaltabilirsiniz.
  • Sunucu yükünü %70’e kadar azaltabilirsiniz.
  • DDoS saldırılarına karşı koruma sağlayabilirsiniz.

7. İzleme ve Hata Ayıklama

Statik sitenizin performansını ve güvenliğini izlemek için aşağıdaki araçları kullanabilirsiniz:

1. Nginx Logları

Nginx’in log dosyalarını inceleyerek hataları ve performans sorunlarını tespit edebilirsiniz:

# Erişim loglarını görüntüleyin
tail -f /var/log/nginx/access.log

# Hata loglarını görüntüleyin
tail -f /var/log/nginx/error.log

2. Prometheus ve Grafana ile İzleme

Prometheus ve Grafana kullanarak Nginx’in performansını ve trafiğini izleyebilirsiniz:

  1. Prometheus Nginx Exporter kurun:

    sudo apt install prometheus-nginx-exporter
  2. Prometheus yapılandırma dosyasına Nginx exporter’ı ekleyin:

    - job_name: 'nginx'
      static_configs:
        - targets: ['localhost:9113']
  3. Grafana ile verileri görselleştirin.

3. Uptime Kuma ile Site İzleme

Ücretsiz ve açık kaynaklı Uptime Kuma aracını kullanarak sitenizin kullanılabilirliğini izleyebilirsiniz:

# Docker ile Uptime Kuma kurun
docker run -d --name uptime-kuma -p 3001:3001 -v uptime-kuma:/app/data louislam/uptime-kuma

Daha sonra, http://sunucu-ip-adresi:3001 adresine giderek sitenizin durumunu izleyebilirsiniz.


8. Sonuç ve Öneriler

Nginx kullanarak statik sitelerinizi yayınlamak, performans, güvenlik ve ölçeklenebilirlik açısından birçok avantaj sağlar. Bu rehberde ele aldığımız konuların özeti:

KonuÖneri
Temel YapılandırmaBasit bir Nginx yapılandırması ile başlayın.
PerformansGzip sıkıştırma, HTTP/2 ve tarayıcı önbelleği kullanın.
GüvenlikHTTPS, UFW ve Nginx güvenlik ayarlarını uygulayın.
ÖlçeklenebilirlikYük dengeleme ve CDN kullanın.
İzlemeNginx logları, Prometheus ve Uptime Kuma ile sürekli izleme yapın.

İleri Düzey İpuçları

  • Brotli Sıkıştırma: Gzip’e göre daha iyi sıkıştırma oranları sunar. Nginx’e Brotli desteği eklemek için bu rehberi takip edin.
  • Rate Limiting: DDoS saldırılarına karşı koruma sağlamak için Nginx’e rate limiting ekleyin:
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    
    server {
        location / {
            limit_req zone=one burst=20 nodelay;
        }
    }
  • ModSecurity: Web uygulama güvenlik duvarı (WAF) olarak ModSecurity’yi kullanın.

9. Kaynaklar ve Referanslar


Bu rehberde, Nginx kullanarak statik sitelerinizi nasıl yayınlayabileceğinizi, performansını nasıl optimize edeceğinizi ve güvenliği nasıl artıracağınızı adım adım öğrendiniz. Statik sitelerinizi yayınlarken bu ipuçlarını uygulayarak, hızlı, güvenli ve ölçeklenebilir bir web deneyimi sunabilirsiniz. İyi kodlamalar! 🚀


Bu yazı Mistral ile otomatik oluşturulmuştur.