Nginx Rate Limit : Part 1

Nginx Rate Limit : Part 1

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 သက်မှတ်တာလေးက အဆင်ပြေသွားပါပြီ။

လာရောက်ဖတ်ရှု့ပေးသူအားလုံး ကျေးဇူးတင်ပါတယ်။