Nginx üzerinde gelen isteklere belli limitler uygulayabilirsiniz. Nginx Limit Rate. Bunun için aşağıdaki yazı işinize yarayacaktır.
Örnek olarak docker üzerinde burada oluşturmuş olduğumuz demo dan devam edeceğiz.
Config için
Proxy isimli container içerisinde
/etc/nginx/conf.d/testing.conf
İsimli config dosyasını açıp aşağıdaki script içeriğini kontrol ederek uygulayabilirsiniz.
upstream servers { least_conn; # yoğunluğa göre yönlendirme yapacak # ip_hash; # aktif olduğunda istekler hep aynı sunucuya yönlendirilecek server 172.17.0.3 weight=2; # 2 istek bu sunucuya diğerlerine 1 er dağılım server 172.17.0.4; server 172.17.0.5; server 172.17.0.6 max_fails=3 fail_timeout=30s; # bu sunucuya 3 hata olduğunda 30s bekle } limit_conn_zone $binary_remote_addr zone=inanczone:10m; #inanczone adında bir bellek bölgesi oluşturuluyor. kaynak bilgisi IP adresleridir. #bellek bölgesi için belirkenen boyut 10 mb limit_conn_status 429; #istek karşılığında alınan istek durumu.429 hatası alınırsa istek sayısı fazladır server { listen 80; server_name www.inanc1.info; location / { #load balance proxy_pass http://servers; } location /downloads{ limit_conn inanczone 10; #inanczone alanında istekte bulunacak IP adresi sayısı 10 limit_rate_after 10m; limit_rate 500k; #ilk 10mb indirdikten sonraki tüm indirme hızı 500 k indirecek şekilde conf edilsin } } |