前言
如果你的Web服务器有流量限制,或者流量是要收费的,那么可能要需要加一层简单的DDOS防护,如果专门购买DDOS防护产品,那么成本也是挺高的。nginx下只要稍加配置,就可以初步实现了。
实现
如果要设置每日、每月流量上线,请查看 https://blog.terrynow.com/2021/06/06/linux-server-iptables-set-daily-or-monthly-qutoa/
Nginx可以通过limit_req、limit_conn、limit_rate来实现
- limit_req 限制每秒请求数
配置举例:
limit_req可以放在server下,也可以放在location下
http { #定义一个zone名字叫one,并为这个zone分配10M内存,用来存储会话(二进制远程地址),1m内存可以保存16000个会话 #rate=30r/s; 限制频率为每秒30个请求 limit_req_zone $binary_remote_addr zone=one:10m rate=30r/s; server { #执行的动作,通过zone名字对应 #burst=5 burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内等待,但是这个等待区里的位置只有5个,超过的请求会直接报503的错误然后返回。 #nodelay 如果没有设置,则所有请求会依次等待排队 如果设置,会在瞬时提供处理(burst + rate)个请求的能力,请求超过(burst + rate)的时候就会直接返回503,永远不存在请求需要等待的情况。(这里的rate的单位是:r/s) #limit_req zone=one burst=10 nodelay; limit_req zone=one burst=10; } }
- limit_conn 限制IP连接数
配置举例:
http { #定义一个zone名字叫addr limit_conn_zone $binary_remote_addr zone=addr:10m; server { #限制同一时间内50个连接,超出的连接返回503 limit_conn addr 50; } }
- limit_rate 限速
配置举例
location /download/ { limit_rate 500k; } # 先全速传输1M,然后开始限速: location /download2/ { limit_rate_after 1m; limit_rate 500k; }
文章评论
Kamagra Online Kostenlos Uhopem - buy cialis generic online cheap Buy Kamagra Without Prescription Zraras buy cialis online europe</a> Wsfalx Azjzsl - where can i buy cialis on line Viagra Aumenta Dimensioni