nginx訪問限制模塊limit_conn_zone 和limit_req_zone配置使用詳解
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
Nginx請(qǐng)求限制模塊ngx_http_limit_req_module、流量限制模塊ngx_stream_limit_conn_module基于令牌桶算法,可以通過limit_conn_zone 和limit_req_zone這兩個(gè)組件來對(duì)客戶端訪問目錄和文件的訪問頻率和次數(shù)進(jìn)行限制。可以方便的控制令牌速率,自定義調(diào)節(jié)限流,實(shí)現(xiàn)基本的限流控制。如能善用此模塊能夠?qū)?cc、ddos等此類的×××進(jìn)行有效的防御。
對(duì)于提供下載的網(wǎng)站,肯定是要進(jìn)行流量控制的,例如軟件下載站、視頻服務(wù)等。它也可以減少一些爬蟲程序或者DDOS的×××。 案例
nginx連接數(shù)限制模塊1、limit_conn指令
指定一個(gè)zone的每個(gè)key最大連接數(shù) 限制每個(gè)name對(duì)應(yīng)客服端的連接數(shù),比如上面的limit_conn addr 5;意思就是現(xiàn)在addr這個(gè)name對(duì)應(yīng)的客服端的連接數(shù),比如name對(duì)應(yīng)的是45.168.68.202這個(gè)ip地址,那么這個(gè)ip最多有5個(gè)并發(fā)連接,那什么并發(fā)呢?像這樣的連接,請(qǐng)求到達(dá)并已經(jīng)讀取了請(qǐng)求頭信息到響應(yīng)頭信息發(fā)送完畢,在這個(gè)過程中的連接,當(dāng)一個(gè)客服端的并發(fā)連接達(dá)到我們?cè)O(shè)置的5個(gè)以上時(shí),會(huì)返回503 (Service Temporarily Unavailable) 錯(cuò)誤 這里,小伙伴對(duì)這個(gè)zone估計(jì)還是有一些疑問,有疑問可以在下面評(píng)論,大家一起討論,比如,有人可能會(huì)問,一個(gè)客服端占用5個(gè),那么327680只能容納65536個(gè)客服端,那么第65537個(gè)客服端就會(huì)返回503錯(cuò)誤。 limit_conn_zone語法:
看上面的語法,limit_conn_zone只能用在http段,例如:
對(duì)于關(guān)系:key => $binary_remote_addr #二進(jìn)制的IP地址name => addr #隨便取的一個(gè)名字,比如,你可以取成abcsize => 10m #空間大小,這里是10兆一個(gè)二進(jìn)制的ip地址在32位機(jī)器上占用32個(gè)字節(jié),在64位機(jī)器上占用63個(gè)字節(jié),那么10M可以存放多少呢,計(jì)算一下,10x1024x1024/32 = 327680,意思就是可以存放326780個(gè)ip地址(32位),64位可以存放163840個(gè)ip
當(dāng)共享內(nèi)存空間被耗盡,服務(wù)器將會(huì)對(duì)后續(xù)所有的請(qǐng)求返回 503 (Service Temporarily Unavailable) 錯(cuò)誤 limit_conn_log_level指令
說明:當(dāng)達(dá)到最大限制連接數(shù)后,記錄日志的等級(jí)。 limit_conn_status指令
說明:當(dāng)超過限制后,返回的響應(yīng)狀態(tài)碼,默認(rèn)是503,現(xiàn)在你就知道上面為什么會(huì)返回503(Service Temporarily Unavailable)服務(wù)暫時(shí)不可用 例子:
ngx_http_limit_req_modulelimit_req_zone
ngx_http_limit_req_module模塊的使用和ngx_http_limit_conn_module模塊差不多,這里暫時(shí)不在講述,可查看官方文檔:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html 該文章在 2025/8/20 13:01:28 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |