nginx - 讓網站避免大量的壓測方法

Python 的輕鬆閲讀
·
·
IPFS
·

使用 nginx 為主要的 Web 的服務

先安裝 nginx

sudo apt install nginx

修改 nginx 的設定

在原來的 server 之前寫入兩段設定 以下配置將限制來自單個IP地址的請求的處理速率,同時限制虛擬服務器的請求處理速率 可以避免大量的壓測,以及基本的 DDoS 的防護

limit_req_zone $binary_remote_addr zone=lr_zone:10m rate=1r/s;
limit_req_zone $server_name zone=perserver:10m rate=10r/s;

Fail2ban 的設置

安裝 fail2ban

sudo apt install fail2ban

建立一個 Fail2ban 的 Filter 用於 nginx req limit

建立 /etc/fail2ban/filter.d/nginx-req-limit.conf:

# Fail2Ban configuration file
#
# supports: ngx_http_limit_req_module module 

[Definition]
failregex = limiting requests, excess:.* by zone.*client: <HOST>
ignoreregex =

添加此 Filter 設定

設置文件 /etc/fail2ban/jail.local

[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=nginx-req-limit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 2700
maxretry = 10

設定後重啟 Fail2ban 即可

針對 Fail2ban 的黑名單門檻

就看在多少區間(findtime)內執行幾次(maxretry)

上面就設定完成

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!

Python 的輕鬆閲讀寫寫 Python,還有關於 Python 延伸的項目
  • 来自作者
  • 相关推荐

YT DEMO

寵物的案子

診所的健檢