這幾天 blog 被掃,用 nginx 的 limit_req_zone 擋…

微信扫一扫,分享到朋友圈

這幾天 blog 被掃,用 nginx 的 limit_req_zone 擋…

這幾天 blog 被掃中單一頁面負載會比較重的頁面,結果 CPU loading 變超高,從後台可以看到常常滿載:

看了一下是都是從 Azure 上面打過來的,有好幾組都在打,IP address 每隔一段時間就會變,所以單純用 firewall 擋 IP address 的方法看起來沒用…

印象中 nginx 本身可以 rate limit,搜了一下文件可以翻到應該就是「 Module ngx_http_limit_req_module 」這個,就設起來暫時用這個方式擋著,大概是這樣:

limit_conn_status 429;
limit_req_status 429;
limit_req_zone $binary_remote_addr zone=myzone:10m rate=10r/m;

其中預設是傳回 5xx 系列的 service unavailable,但這邊用 429 應該更正確,從維基百科的「 List of HTTP status codes 」這邊可以看到不錯的說明:

429 Too Many Requests (RFC 6585) The user has sent too many requests in a given amount of time. Intended for use with rate-limiting schemes.

然後 virtual host 的設定檔內把某個 path 放進這個 zone 保護起來:

location /path/subpath {
limit_req zone=myzone;
}

這樣一來就可以自動擋下這些狂抽猛送的 bot,至少在現階段應該還是有用的…

如果之後有遇到其他手法的話,再見招拆招看看要怎麼再加強 😮

微信扫一扫,分享到朋友圈

這幾天 blog 被掃,用 nginx 的 limit_req_zone 擋…

ESPN往日辉煌不在 迪士尼正在革自己的命?

上一篇

阿里Q3财报看点:电商业务不再单打 用户增速放缓“情有可原”

下一篇

你也可能喜欢

這幾天 blog 被掃,用 nginx 的 limit_req_zone 擋…

长按储存图像,分享给朋友