Tüm yazılarTeknik

Nginx'i Uygulama Katmanı Sellerine Karşı Sertleştirmek

Akarguard Ekibi · Güvenlik Ekibi8 dk okumaJun 3, 2025

Nginx varsayılanları dost bir internet için ayarlanmıştır. Trafik düşmanca olduğunda önem kazanan yönergeler: bağlantı limitleri, istek limitleri, zaman aşımları ve ayakta kalıp kalmayacağınıza sessizce karar veren tamponlar.

Nginx, bağlantıları ucuza açık tutmakta çok iyidir; bir uygulama sunucusunu öldüren selleri bu yüzden atlatır. Ama bu güç aynı zamanda bir tuzaktır: arkasındaki şeyin kaldırabileceğinden çok daha fazla eşzamanlı işi seve seve kabul eder ve sonra hatayı aşağıya, uygulamaya aktarır.

İstekleri Sınırlamadan Önce Bağlantıları Sınırlayın

İki farklı limit iki farklı sorunu çözer. Bağlantı limiti, tek bir adresin kaç soketi açık tutabileceğini kısıtlar; bu, çok veri göndermeden bağlantıları meşgul eden yavaş saldırılara karşı savunmadır. İstek hız limiti ise bir adresin ne kadar hızlı iş isteyebileceğini kısıtlar; bu da hacme karşı savunmadır. Yalnızca ikincisini yapılandıran siteler birincisine karşı savunmasız kalır.

Önemli Olan Zaman Aşımları

  • Başlık ve gövde okuma zaman aşımları: yavaş-gönderim saldırılarına karşı en etkili tek denetim. Dakikalarla ölçülen varsayılanlar bir davetiyedir.
  • Keepalive zaman aşımı: cömert keepalive'ler gerçek kullanıcı performansını artırır ama bir bağlantı selinin maliyetini de katlar. İkisini birlikte düşünerek ayarlayın.
  • Upstream zaman aşımları: uygulama takılırsa nginx bekleyen işçileri biriktirmek yerine hızla vazgeçmelidir.

Tamponlama bir savunmadır

Nginx, upstream bağlantısı açmadan önce isteğin tamamını tamponladığında, yavaş bir istemci pahalı bir uygulama işçisi yerine ucuz nginx belleğini meşgul eder. Kolaylık için tamponlamayı kapatmak bu kalkanı kaldırır.

Gerçek Kullanıcıları Bozmayan Hız Limitleri

Tek bir küresel hız limiti neredeyse her zaman ya yoğun bir sayfa için fazla sıkı ya da anlam ifade etmeyecek kadar gevşektir. Uç sınıfı başına farklı limitler uygulayın: statik dosyalar cömert, HTML sayfalar orta, pahalı uçlar — arama, giriş, yazan her şey — sıkı olsun. Bir tarayıcı gibi davrandığı için cezalandırılmasın diye normal bir sayfa yüklemesine (aynı anda birçok istek yollar) bir patlama payı bırakın.

Doğru Durum Kodunu Döndürün

Bir limit devreye girdiğinde 429 ile yanıt vermek, düzgün davranan istemcilere ve arama motorlarına geri çekilip sonra dönmelerini söyler. Genel bir hata ile yanıt vermek ise tarayıcılara sayfanın bozuk olduğunu öğretir. Saldırı sırasında seçtiğiniz durum kodunun, saldırıdan sonra da süren sonuçları vardır.

Tavanı Bilin

Bütün bunlar zaten makinenize ulaşmış trafik üzerinde çalışır. Çekirdek seviyesi ve upstream filtreleme, belli bir hacimden sonra bir paketin en ucuz işlenişinin bile milyonlarcası olduğunda çok pahalı kalması yüzünden vardır. Nginx'i ayarlamak tavanı yükseltir; onu ortadan kaldırmaz.

Sıkça sorulan sorular

Nginx'i DDoS'a karşı nasıl sertleştiririm?

Önce bağlantı limitleri (yavaş saldırılar için), sonra istek hız limitleri (hacim için) koyun; başlık/gövde okuma zaman aşımlarını kısaltın; upstream zaman aşımlarını sıkın; tamponlamayı açık tutun; uç sınıfı başına hız limiti uygulayın ve limit devreye girince 429 döndürün.

Bağlantı limiti ile istek hız limiti arasındaki fark nedir?

Bağlantı limiti tek bir adresin açık tutabileceği soket sayısını kısıtlar — çok veri göndermeden bağlantıları meşgul eden yavaş saldırılara karşı. İstek hız limiti ise bir adresin ne kadar hızlı istek yapabileceğini kısıtlar — hacme karşı. İkisi farklı sorunları çözer; yalnızca birini koymak diğerine açık bırakır.

Nginx tek başına DDoS'u durdurur mu?

Hayır. Nginx'i sertleştirmek makinenize ulaşan trafiğin tavanını yükseltir ama onu kaldırmaz. Belli bir hacimden sonra paket başına en ucuz işlem bile milyonlarcası olunca pahalıdır; ham selleri çekirdek seviyesi ve upstream filtreleme durdurur.

Hız limiti devreye girince hangi durum kodunu döndürmeliyim?

429 (Too Many Requests). Bu, düzgün istemcilere ve arama motorlarına geri çekilip sonra dönmelerini söyler. Genel bir 5xx hatası ise tarayıcılara sayfanın bozuk olduğunu öğretir ve bu etki saldırıdan sonra da sürer.

Sitenizi koruyun

Akarguard, trafiği sunucunuza ulaşmadan önce filtreler. Kurulum tek bir DNS değişikliğidir; donanım almanıza ya da sunucunuzu taşımanıza gerek yok.

Fiyatları gör