- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
nginx限制ip訪問頻率
Nginx通過limit_conn_zone 和 limit_req_zone對同一個IP地址進(jìn)行限速限流,可防止DDOS/CC和flood攻擊 。
limit_conn_zone是限制同一個IP的連接數(shù)。而一旦連接建立之后 。客戶端就會通過這次的連接發(fā)送多次請求,
那么在此期間的請求頻率和速度進(jìn)行限制就需要limit_req_zone
1、limit_conn_zone配置
連接數(shù)限制,相當(dāng)于限制了nginx與客戶端之間的管道個數(shù)
http區(qū)塊的配置:
limit_conn_zone $binary_remote_address zone=asia; 10m;
# 這個配置的意思就是定義一個名為 asia的limit_conn_zone用來存儲session
# 內(nèi)存為10m大小
server區(qū)塊配置如下;
limit_conn asia 2;
# 單個客戶端ip與服務(wù)器的連接數(shù)
2、limit_req_zone配置
請求頻率限制,相當(dāng)于限制了nginx與客戶端管道之間水的流速
http區(qū)塊配置:
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
server區(qū)塊配置:
limit_req_zone=one burst=10;
burst漏桶原理
rate=5r/s :從單一IP地址每秒5個請求是允許的
burst=10:允許超過頻率rate限制的請求數(shù)不多于10個
當(dāng)每秒請求超過5個 但是在10個以下,也就是每秒請求的數(shù)量在5-10之間的請求將被延時delay,雖然沒有明確的定義delay,
默認(rèn)就是延時的,因為漏桶其實類似隊列Queue或消息系統(tǒng),當(dāng)每秒請求數(shù)量超過最低速率每5個請求時,多余的請求將會
進(jìn)入這個隊列排隊等待。如同機(jī)場安檢,一次放入5個,多余5個,小于10個排隊等待。
注:這里的隊列或者漏桶是以秒為單位的
如果每秒的請求超過10個 ,也就是超出了burst的限制 。那么也不用排隊,而是直接回絕返回503錯誤(Service Temporarily Unavailable)
如果使用nodelay:
limit_req zone=one burst=10 nodelay;
這表示,如果每秒請求在5-10個之間會盡快完成,也就是以每秒10個速率完成,超過每秒10+5也就是15個就立即返回503,
因此nodelay實際沒有了延時也就取消了隊列等候過渡。在大型網(wǎng)站中,由于訪問量巨大,通常會在http服務(wù)器后面放置一個消息隊列,
比如Apache Kafka,用來排隊大量請求,對于中小型網(wǎng)站,推薦使用delay方案,而不要寫明nodelay,但是網(wǎng)絡(luò)上其他各種文章幾乎都是推薦nodelay。
3、帶寬限制:
limit_rate 50k;
limit_rate_after 500k;
當(dāng)下載的大小超過500k以后,以每秒50K速率限制。
示例:
location /flv/ {
flv;
limit_rate_after 500k;
limit_rate 50k;
}
4、防止POST攻擊:
上面總結(jié)了三個限速限流設(shè)置方式,還有一種能夠防止POST攻擊,黑客通過發(fā)出大量POST請求對網(wǎng)站各種URL進(jìn)行試探攻擊,
可以通過下面方式防止
http {
... #nginx.conf 配置
#如果請求類型是POST 將ip地址映射到 $limit 值
map $request_method $limit {
default "";
POST $binary_remote_addr;
}
#創(chuàng)造10mb zone內(nèi)存存儲二進(jìn)制ip
limit_req_zone $limit zone=my_zone:10m rate=1r/s;
}
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP