LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

nginx訪問限制模塊limit_conn_zone 和limit_req_zone配置使用詳解

admin
2025年8月20日 12:56 本文熱度 428
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的×××。

案例

http

{

limit_conn_zone $binary_remote_addr zone=perip:20m;

limit_req_zone  $binary_remote_addr zone=req_one:20m rate=12r/s;

limit_conn   one  10;

limit_req   zone=req_one burst=120;

server  {

        listen          80;

        server_name     xxx.xxx.com ;

        location / {

            root   /var/www/tomener;

            limit_conn addr 5; #是限制每個(gè)IP只能發(fā)起5個(gè)連接

            limit_rate 100k; #限速為 100KB/秒

}

}

}

nginx連接數(shù)限制模塊

1、limit_conn指令

語法:      limit_conn zone number;

默認(rèn)值:    —

使用字段:  http, server, location

指定一個(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

語法:

Syntax:     limit_conn_zone key zone=name:size;

Default:     —

Context:     http

看上面的語法,limit_conn_zone只能用在http段,例如:

http {

    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {

        listen       80;

        server_name  www.tomener.com tomener.com;

        location / {

            root   /var/www/tomener;

            index  index.php index.html index.htm;

            limit_conn addr 5; #是限制每個(gè)IP只能發(fā)起5個(gè)連接

            limit_rate 100k; #限速為 100KB/秒

        }

    }

}

對(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

1、key:鍵,可以說是一個(gè)規(guī)則,就是對(duì)客戶端連接的一個(gè)標(biāo)識(shí),比如上面用的是IP地址,比如我們可以用$query_string,例如:/index.php?mp=138944093953,那我們就可以根據(jù)mp的值來限制連接數(shù),更多的nginx內(nèi)置變量請(qǐng)查看http://nginx.org/en/docs/varindex.html

2、zone:共享內(nèi)存空間,作用:保存每個(gè)key對(duì)應(yīng)的連接數(shù)

3、size:共享內(nèi)存空間大小,如1M、10M、100K

當(dāng)共享內(nèi)存空間被耗盡,服務(wù)器將會(huì)對(duì)后續(xù)所有的請(qǐng)求返回 503 (Service Temporarily Unavailable) 錯(cuò)誤

limit_conn_log_level指令

Syntax:      limit_conn_log_level info | notice | warn | error;

Default:     limit_conn_log_level error;

Context:     http, server, location

說明:當(dāng)達(dá)到最大限制連接數(shù)后,記錄日志的等級(jí)。

limit_conn_status指令

Syntax:     limit_conn_status code;

Default:     limit_conn_status 503;

Context:     http, server, location

說明:當(dāng)超過限制后,返回的響應(yīng)狀態(tài)碼,默認(rèn)是503,現(xiàn)在你就知道上面為什么會(huì)返回503(Service Temporarily Unavailable)服務(wù)暫時(shí)不可用

例子:

1、同時(shí)限制ip和虛擬主機(jī)最大并發(fā)連接

http {

    limit_conn_zone $binary_remote_addr zone=perip:10m;

    limit_conn_zone $server_name zone=perserver:10m;

    server {

        location / {

            limit_conn perip 10;

            limit_conn perserver 1000;

        }

    }

}?

2、根據(jù)請(qǐng)求參數(shù)來限制

#請(qǐng)求:http://www.tomener.com/item.html?mp=1967464354&id=43566929485

limit_conn_zone $mp_limit_key zone=mp:10m;



server {



    set $mp_limit_key $binary_remote_addr; #key設(shè)置默認(rèn)值

    if ( $query_string ~ .*mp=(\d+).* ) {

        set $mp_limit_key $1;

    }

    location / {

        limit_conn mp 10;

    }

}

ngx_http_limit_req_module

limit_req_zone

Syntax:     limit_req_zone key zone=name:size rate=rate;

Default:     —

Context:     http

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)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
欧美三级中文字幕在线观看 | 太粗太深了太紧太爽了国产 | 日本一区二区三区在线播放不卡 | 亚洲а∨天堂手机版在线观看 | 日本欧美动漫成人精品一区二区 | 亚洲一级中文字幕 |