limit_conn_module語法 | 范圍 | 說明 |
---|---|---|
limit_conn_zone 標(biāo)識 zone=空間名:空間大小; | http | 用于聲明一個(gè)存儲空間 |
limit_conn 空間名 并發(fā)限制數(shù); | http、server或location | 用于限制某個(gè)存儲空間的并發(fā)數(shù)量 |
limit_conn_log_level 日志等級; | http、server或location | 當(dāng)達(dá)到最大限制連接數(shù)后, 記錄日志的等級 |
limit_conn_status 狀態(tài)碼; | http、server或location | 當(dāng)超過限制后,返回的響應(yīng)狀態(tài)碼,默認(rèn)是503 |
limit_conn_zone會聲明一個(gè)zone
空間來記錄連接狀態(tài), 才能限制數(shù)量。
zone
是存儲連接狀態(tài)的空間, 以鍵值對存儲, 通常以客戶端地址$binary_remote_addr
作為key
來標(biāo)識每一個(gè)連接。
當(dāng)zone
空間被耗盡,服務(wù)器將會對后續(xù)所有的請求返回503(Service Temporarily Unavailable)
錯(cuò)誤。
請求限制 limit_req_mudule
limit_req_mudule
:HTTP
請求頻率限制, 一次TCP
連接可以建立多次HTTP
請求。
配置語法:
limit_req_mudule語法 | 范圍 | 說明 |
---|---|---|
limit_req_zone key zone=空間名:空間大小 rate=每秒請求數(shù); | http | 用于聲明一個(gè)存儲空間 |
limit_req zone=空間名 [burst=隊(duì)列數(shù)] [nodelay]; | http、server或location | 用于限制某個(gè)存儲空間的并發(fā)數(shù)量 |
這里的zone也是用來存儲連接的一個(gè)空間。
burst 和 nodelay
burst
和nodelay
對并發(fā)請求設(shè)置了一個(gè)緩沖區(qū)和是否延遲處理的策略。
先假設(shè)有如下zone
配置。
http { limit_req_zone $binan_remote_addr zone=req_zone:1m rate=10r/s; }
情況 1:limit_req zone=req_zone;
1
秒發(fā)送10
個(gè)請求, 正常響應(yīng)。1
秒發(fā)送13
個(gè)請求, 前10
個(gè)請求正常響應(yīng), 后3
個(gè)請求返回503(Service Temporarily Unavailable)
。不加brust
和nodelay
的情況下,rate=10r/s
每秒只能執(zhí)行10
次請求, 多的直接返回503
錯(cuò)誤。
情況 2:limit_req zone=req_zone brust=5;
1
秒發(fā)送10
個(gè)請求, 正常響應(yīng)。1
秒發(fā)送13
個(gè)請求, 前10
個(gè)請求正常響應(yīng), 后3
個(gè)請求放入brust
等待響應(yīng)。1
秒發(fā)送20
個(gè)請求, 前10
個(gè)請求正常響應(yīng), 后5
個(gè)請求放入brust
等待響應(yīng), 最后5
個(gè)請求返回503(Service Temporarily Unavailable)
, 第2
秒執(zhí)行brust
中的5
個(gè)請求。1
秒發(fā)送20
個(gè)請求, 前10
個(gè)請求正常響應(yīng), 后5
個(gè)請求放入brust
等待響應(yīng), 最后5
個(gè)請求返回503(Service Temporarily Unavailable)
, 第2
秒發(fā)送6
個(gè)請求, 執(zhí)行brust
中的5
個(gè)請求, 將5
個(gè)請求放入brust
等待響應(yīng), 剩下的1
個(gè)請求返回503(Service Temporarily Unavailable)
。加brust=5
不加nodelay
的情況下, 有一個(gè)容量為5
的緩沖區(qū),rate=10r/s
每秒只能執(zhí)行10
次請求, 多的放到緩沖區(qū)中, 如果緩沖區(qū)滿了, 就直接返回503
錯(cuò)誤。而緩沖區(qū)在下一個(gè)時(shí)間段會取出請求進(jìn)行響應(yīng), 如果還有請求進(jìn)來, 則繼續(xù)放緩沖區(qū), 多的就返回503
錯(cuò)誤。
情況 3:limit_req zone=req_zone brust=5 nodelay;
1
秒發(fā)送10
個(gè)請求, 正常響應(yīng)。1
秒發(fā)送13
個(gè)請求,13
個(gè)請求正常響應(yīng)。1
秒發(fā)送20
個(gè)請求, 前15
個(gè)請求正常響應(yīng), 后5
個(gè)請求返回503(Service Temporarily Unavailable)
。1
秒發(fā)送20
個(gè)請求, 前15
個(gè)請求正常響應(yīng), 后5
個(gè)請求返回503(Service Temporarily Unavailable)
, 第2
秒發(fā)送6
個(gè)請求, 正常響應(yīng)。加brust=5
和nodelay
的情況下, 有一個(gè)容量為5
的緩沖區(qū),rate=10r/s
每秒能執(zhí)行15
次請求,15=10+5
。多的直接返回503
錯(cuò)誤。
基于 IP 的訪問控制
http_
access_module: 基于IP的訪問控制, 通過代理可以繞過限制, 防君子不防小人。
http_access_module語法 | 范圍 | 說明 |
---|---|---|
allow IP地址 | CIDR網(wǎng)段 | unix: | all; | http、server、location和limit_except | 允許IP地址、CIDR格式的網(wǎng)段、unix套接字或所有來源訪問 |
deny IP地址 | CIDR網(wǎng)段 | unix: | all; | http、server、location和limit_except | 禁止IP地址、CIDR格式的網(wǎng)段、unix套接字或所有來源訪問 |
allow和deny會按照順序, 從上往下, 找到第一個(gè)匹配規(guī)則, 判斷是否允許訪問, 所以一般把all
放最后
location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; }
基于用戶密碼的訪問控制
ht
tp_auth_basic_module: 基于文件匹配用戶密碼的登錄
http_auth_basic_module語法 | 范圍 | 說明 |
---|---|---|
auth_basic 請輸入你的帳號密碼 | off; | http、server、location和limit_except | 顯示用戶登錄提示 (有些瀏覽器不顯示提示) |
auth_basic_user_file 存儲帳號密碼的文件路徑; | http、server、location和limit_except | 從文件中匹配帳號密碼 |
密碼文件可以通過htpasswd
生成,htpasswd
需要安裝yum install -y httpd-tools
。
# -c 創(chuàng)建新文件, -b在參數(shù)中直接輸入密碼 $ htpasswd -bc /etc/nginx/conf.d/passwd user1 pw1 Adding password for user user1 $ htpasswd -b /etc/nginx/conf.d/passwd user2 pw2 Adding password for user user2 $ cat /etc/nginx/conf.d/passwd user1:$apr1$7v/m0.IF$2kpM9NVVxbAv.jSUvUQr01 user2:$apr1$XmoO4Zzy$Df76U0Gzxbd7.5vXE0UsE0
參考資料
limit_conn_module
limit_req_mudule
http_access_module
http_auth_basic_module
總結(jié)
以上所述是小編給大家介紹的基于Nginx實(shí)現(xiàn)訪問控制、連接限制,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
標(biāo)簽:興安盟 中衛(wèi) 大慶 臺灣 安陽 雅安 長治 清遠(yuǎn)
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于Nginx實(shí)現(xiàn)訪問控制、連接限制》,本文關(guān)鍵詞 基于,Nginx,實(shí)現(xiàn),訪問,控制,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。