# Nginx Rate Limit : Part 1

Nginx မှာRequest Rate Limit လုပ်ခြင်း ကို sharing လုပ်ပေးသွားပါမယ်။

Step 1:

Nginx မှာ Global Setting နဲ့သွားပါမယ်။

```bash
$sudo vim /etc/nginx/nginx.conf
```

ရဲ့ http block ထဲမှာ ဒီ rate limit configuration လေးပထမဆုံးသွားထည့်ပါမည်။

```plaintext
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 လေးကို ပြန်ခေါ်သုံးမှာဖြစ်ပါတယ်။

ဒီအတွက်

```bash
$sudo vim /etc/nginx/conf.d/example.conf
```

ထဲက server block ထဲမှာ ဒီ config လေးသက်မှတ်ပေးပါမယ်။

```plaintext
location / {
    limit_req zone=one;
}
```

ဆိုပြီး ပြန်ခေါ်သုံးပါမယ်။

Config OK လား

```bash
$sudo nginx -t
```

နဲ့စစ်ကြည့်ပါ။

```bash
$sudo nginx -s reload
```

နဲ့ service reload လုပ်ပေးပါ။

Rate Limit တကယ်အလုပ်လုပ်မလုပ်သိရန် apache-bench tool လေးနဲ့စစ်ကြည့်ပါ။

```bash
$sudo apt install apache-utils -y
```

```bash
$ab -n 100 -c 100 -m GET https://www.example.com/
```

Fail State မှာ 90 ပြနေရင် အဆင်ပြေပါပြီ။

ဒါဆို Nginx မှာ rate Limit သက်မှတ်တာလေးက အဆင်ပြေသွားပါပြီ။

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