Nginx မှာRequest Rate Limit လုပ်ခြင်း ကို sharing လုပ်ပေးသွားပါမယ်။
Step 1:
Nginx မှာ Global Setting နဲ့သွားပါမယ်။
$sudo vim /etc/nginx/nginx.conf
ရဲ့ http block ထဲမှာ ဒီ rate limit configuration လေးပထမဆုံးသွားထည့်ပါမည်။
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
Identifier ဖြစ်တဲ့ $binary..ကိုသုံးပြီး client ရဲ့ IP ကို မှတ်လိုက်တာပါ။
ဒီလိုမှတ်ဖို့အတွက် Memory လိုတဲ့အတွက် 10m သက်မှတ်ပေးလိုက်ပါတယ်။ 10m က 160,000 connection လောက်ကိုမှတ်ထားနိုင်ပါတယ်။
rate=10r/s ကတော့ 1 Second မှာ request 10 ခု့ပဲ ခွင့်ပြု့မယ်လို့ပြောလိုက်တာပါ။
Step 2:
Global config နဲ့သက်မှတ်ထားတဲ့ rate limit လေးကို ပြန်ခေါ်သုံးမှာဖြစ်ပါတယ်။
ဒီအတွက်
$sudo vim /etc/nginx/conf.d/example.conf
ထဲက server block ထဲမှာ ဒီ config လေးသက်မှတ်ပေးပါမယ်။
location / {
limit_req zone=one;
}
ဆိုပြီး ပြန်ခေါ်သုံးပါမယ်။
Config OK လား
$sudo nginx -t
နဲ့စစ်ကြည့်ပါ။
$sudo nginx -s reload
နဲ့ service reload လုပ်ပေးပါ။
Rate Limit တကယ်အလုပ်လုပ်မလုပ်သိရန် apache-bench tool လေးနဲ့စစ်ကြည့်ပါ။
$sudo apt install apache-utils -y
$ab -n 100 -c 100 -m GET https://www.example.com/
Fail State မှာ 90 ပြနေရင် အဆင်ပြေပါပြီ။
ဒါဆို Nginx မှာ rate Limit သက်မှတ်တာလေးက အဆင်ပြေသွားပါပြီ။
လာရောက်ဖတ်ရှု့ပေးသူအားလုံး ကျေးဇူးတင်ပါတယ်။