Nginx bant genişliği sınırlama (bandwidth limiting) nasıl yapılır? (limit_conn_module, limit_req_module)

Nginx ve Bant Genişliği Sınırlama

Nginx, yüksek performanslı bir HTTP ve ters proxy sunucusudur. Bu sunucu, yük dengeleme, statik dosya sunumu ve HTTP hız sınırlaması gibi çeşitli işlevler sunar. Bant genişliği sınırlama, sunucu kaynaklarının verimli kullanımı ve kötüye kullanıma karşı korunma açısından önem taşır. Nginx, bu tür sınırlamaları gerçekleştirmek için `limit_conn_module` ve `limit_req_module` gibi modüller sağlar.

limit_conn_module Kullanımı

`limit_conn_module`, belirli bir IP adresinin aynı anda açabileceği bağlantı sayısını sınırlar. Bu modül, sunucu üzerindeki aşırı yüklenmeyi önlemek ve sistem kaynaklarının daha etkili bir şekilde kullanılmasını sağlamak amacıyla kullanılır. `limit_conn` direktifi ile belirli bir kural oluşturulabilir. Aşağıda temel bir kullanım örneği sunulmaktadır:

“`
http {

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {

limit_conn addr 10; Her IP için maksimum 10 bağlantı
}
}
“`

Yukarıdaki yapılandırmada, `limit_conn_zone` direktifi, IP adreslerinin saklanacağı bir alan belirler. `zone=addr:10m`, bu alanın 10 megabaytlık bir bellek alanı kaplayacağını belirtir. `limit_conn addr 10` direktifi, her bir IP adresinin aynı anda en fazla 10 bağlantı açabileceğini tanımlar.

limit_req_module Kullanımı

`limit_req_module`, belirli bir süre içinde gelen isteklerin sayısını sınırlar. Bu modül, sunucuya yönelik yüksek trafikli saldırılara karşı koruma sağlamak ve kullanıcı deneyimini iyileştirmek amacıyla kullanılır. Bu modül ile, belirli bir şart altında istekler sınırlanabilir. İşte temel bir yapılandırma örneği:

“`
http {

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

server {

location / {
limit_req zone=req_limit burst=5 nodelay; Anlık 5 isteğe kadar izin verir
}
}
}
“`

Yukarıdaki yapılandırmada, `limit_req_zone` direktifi, her IP adresinin her saniyede en fazla bir istek göndermesine izin verir. `burst=5` parametresi, anlık olarak beş isteğe kadar izin verir. `nodelay` parametresi, bu beş isteğin kabul edileceği anlamına gelir ve herhangi bir gecikme uygulanmaz.

Birlikte Kullanım

`limit_conn_module` ve `limit_req_module`, Nginx üzerinde birlikte kullanılabilir. Bu durum, hem bağlantı sayısını hem de istek sayısını kontrol etmeye olanak tanır. Aşağıda iki modülün bir arada nasıl kullanılabileceğine dair bir örnek yapılandırma sunulmaktadır:

“`
http {

limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=1r/s;

server {

location / {
limit_conn addr 10; Her IP için maksimum 10 bağlantı
limit_req zone=req_limit burst=5 nodelay; Anlık 5 isteğe kadar izin verir
}
}
}
“`

Yukarıdaki örnekte, her bir IP adresinin maksimum 10 aktif bağlantıya sahip olması sağlanırken, aynı zamanda her saniyede bir istek gönderme kısıtlaması da uygulanmaktadır. Bu tür bir yapılandırma, sunucuya yönelik olası yükün dengelemesi için faydalıdır.

Performans Üzerindeki Etkiler

Bant genişliği sınırlamalarının, sunucu performansı üzerinde çeşitli etkileri bulunabilir. Doğru yapılandırıldığında, bu tür sınırlamalar sunucunun daha istikrarlı çalışmasını ve kaynakların verimli kullanılmasını sağlar. Ayrıca, aşırı trafiğin önlenmesi sayesinde sunucuya yönelik DDoS saldırılarına karşı koruma sağlar. Ancak, yanlış yapılandırmalar kullanıcı deneyimini olumsuz etkileyebilir. Kullanıcıların, gerekli aksiyon alma süreleri içinde taleplerinin reddedilmesi gibi durumlar yaşanabilir.

İzleme ve Güncelleme

Bant genişliği sınırlaması ayarlarının etkili bir şekilde çalışıp çalışmadığını izlemek önemlidir. Sunucu logları ve analiz araçları, bant genişliği sınırlamalarının performansını değerlendirmek için kullanılabilir. Gerekirse ayarlar, trafik koşullarına göre güncellenmelidir. Bant genişliği sınırlama stratejileri, değişen kullanıcı davranışlarına ve uygulama gereksinimlerine göre uyarlanmalıdır.

Sonuç

Nginx üzerinde bant genişliği sınırlama, sunucu kaynaklarının etkin kullanımı ve güvenliğin sağlanması açısından kritik önemde bir adımdır. `limit_conn_module` ve `limit_req_module` modülleri, istek ve bağlantı yönetimini sağlamak için etkili araçlar olarak öne çıkmaktadır. Doğru yapılandırma ile, sistem belirtilen hedeflere ulaşabilir ve kaynakların verimli bir şekilde işlenmesini sağlayabilir. Bu yöntemlerin sürekli olarak izlenmesi ve gerektiğinde güncellenmesi, performans ve güvenlik açısından faydalı olacaktır.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR