成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Nginx 對訪問量的控制

AndroidTraveler / 3313人閱讀

摘要:目的了解的和模塊,對請求訪問量進行控制。即對并發(fā)和并行的控制,這兩個功能分別由和模塊負責實現(xiàn)。模塊說明該模塊主要用于對請求并發(fā)量進行控制。

目的

了解 Nginx 的 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊,對請求訪問量進行控制。

Nginx 模塊化

nginx 的內(nèi)部結(jié)構(gòu)是由核心模塊和一系列的功能模塊所組成。模塊化架構(gòu)使得每個模塊的功能相對簡單,實現(xiàn)高內(nèi)聚,同時也便于對 Nginx 進行功能擴展。
針對 web 請求,Nginx 所有開啟的模塊會組成一條鏈,類似于闖關(guān)游戲中的一道道關(guān)卡,每個模塊負責特定的功能,例如實現(xiàn)壓縮的 ngx_http_gzip_module 模塊,實現(xiàn)驗證的 ngx_http_auth_basic_module 模塊和實現(xiàn)代理的 ngx_http_proxy_module 模塊等。連接到服務(wù)器的請求,會依次經(jīng)過Nginx各個模塊的處理,只有通過這些模塊處理之后的請求才會真正的傳遞給后臺程序代碼進行處理。

Nginx 并發(fā)訪問控制

對于 web 服務(wù)器而言,當遇到網(wǎng)絡(luò)爬蟲,或者惡意大流量攻擊訪問時,會造成服務(wù)器內(nèi)存和 CPU 爆滿,帶寬也會跑滿,所以作為成熟的服務(wù)器代理軟件,需要可以對這些情況進行控制。
Nginx 控制并發(fā)的方法有兩種,一種是通過IP或者其他參數(shù)控制其并發(fā)量;另外一種是控制單位時間內(nèi)總的請求處理量。即對并發(fā)和并行的控制,這兩個功能分別由 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊負責實現(xiàn)。

ngx_http_limit_conn_module 模塊 說明

該模塊主要用于對請求并發(fā)量進行控制。

參數(shù)配置

limit_conn_zone

指令配置  limit_conn_zone key zone=name:size
配置的上下文:http
說明:key 是 Nginx 中的變量,通常為 $binary_remote_addr | $server_name;name 為共享內(nèi)存的名稱,size 為該共享內(nèi)存的大?。淮伺渲脮暾堃粔K共享內(nèi)存空間 name,并且保存 key 的訪問情況

limit_conn_log_level

語法:limit_conn_log_level info|notice|warn|error
默認值:error
配置上下文:http,server,location
說明:當訪問達到最大限制之后,會將訪問情況記錄在日志中

limit_conn

語法:limit_conn zone_name number
配置上下文:http,server,location
說明:使用 zone_name 進行訪問并發(fā)控制,當超過 number 時返回對應(yīng)的錯誤碼

limit_conn_status

語法:limit_conn_status code
默認值:503
配置上下文:http,server,location
說明:當訪問超過限制 number 時,給客戶端返回的錯誤碼,此錯誤碼可以配合 error_page 等參數(shù),在訪問超量時給客戶返回友好的錯誤頁面

limit_rate

語法:limit_rate rate
默認值:0
配置上下文:http,server,location
說明:對每個鏈接的速率進行限制,rate 表示每秒的下載速度;

limit_rate_after

語法:limit_rate_after size
配置上下文:http,server,location
說明:此命令和 limit_rate 配合,當流量超過 size 之后,limit_rate 才開始生效
簡單配置示例
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    listen       80;
    server_name  www.domain.com;
    root   /path/;
    index  index.html index.htm;
    location /ip {
      limit_conn_status 503; # 超限制后返回的狀態(tài)碼;
      limit_conn_log_level warn; # 日志記錄級別
      limit_rate 50; # 帶寬限制
      limit_conn addr 1; # 控制并發(fā)訪問
    }
    # 當超過并發(fā)訪問限制時,返回503錯誤頁面
    error_page 503  /503.html;
}
ngx_http_limit_req_module 模塊 說明

該模塊主要控制單位時間內(nèi)的請求數(shù)。使用 “l(fā)eaky bucket” (漏斗)算法進行過濾,在設(shè)置好限制 rate 之后,當單位時間內(nèi)請求數(shù)超過 rate 時,模塊會檢測 burst 值,如果值為0,則請求會依據(jù) delay|nodelay 配置返回錯誤或者進行等待;如果 burst 大于0時,當請求數(shù)大于 rate 但小于 burst 時,請求進入等待隊列進行處理。

參數(shù)配置

limit_req_zone

語法:limit_req_zone key zone=name:size rate=rate
配置上下文:http
說明:key 是 Nginx 中的變量,通常為 $binary_remote_addr | $server_name;name 為共享內(nèi)存的名稱,size 為該共享內(nèi)存的大??;rate 為訪問頻率,單位為 r/s 、r/m 。此配置會申請一塊共享內(nèi)存空間 name,并且保存 $key 的訪問情況;

limit_req

語法: limit_rate zone=name  [burst=number]  [nodelay|delay=number]
配置上下文:http,server,location
說明:開啟限制,burst設(shè)置最多容量,nodelay決定當請求超量是,是等待處理還是返回錯誤碼;

limit_req_log_level 和 limit_req_status 配置參數(shù)左右與ngx_http_limit_conn_module模塊一致;

簡單配置示例
limit_req_zone $binary_remote_addr zone=req:10m rate=2r/m;
server {
    listen       80;
    server_name  www.domain.com;
    root   /path/;
    index  index.html index.htm;
    location /limit {
      limit_req zone=req burst=3 nodelay;
    }
    # 當超過并發(fā)訪問限制時,返回503錯誤頁面
    error_page 503  /503.html;
}
注意

這兩種訪問控制都需要申請內(nèi)存空間,既然有內(nèi)存空間,當然會存在內(nèi)存耗盡的情況,這時新的請求都會被返回錯誤,所以當開啟訪問量限制時,需要通過監(jiān)控防止此類情況發(fā)生。

小結(jié)

通過對 Nginx 模塊化架構(gòu)的簡單介紹,重點了解 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊的功能和配置參數(shù),實現(xiàn) Nginx 對請求的并發(fā)控制。如有不對,還請指教

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/40276.html

相關(guān)文章

  • 基于Nginx中間件架構(gòu)(一):配置語法、Nginx模塊、請求限制和訪問控制、靜態(tài)WEB服務(wù)

    摘要:被調(diào)用者通過狀態(tài)通知機制等來通知調(diào)用者,或通過回調(diào)函數(shù)來處理結(jié)果阻塞和非阻塞關(guān)注的是調(diào)用者等待被調(diào)用者返回調(diào)用結(jié)果時的狀態(tài)。每當就緒,采用系統(tǒng)的回調(diào)函數(shù)之間將放入,效率更高,最大連接無限制。 一、I/O介紹和Nginx簡介 1.1 I/O 類型(理解) 同步和異步:關(guān)注的是消息通知機制; 同步:調(diào)用發(fā)出之后不會立即返回,但一旦返回,則返回最終結(jié)果;異步:調(diào)用發(fā)出之后,被調(diào)用方立即返回...

    william 評論0 收藏0
  • Nginx訪問控制與參數(shù)調(diào)優(yōu)

    摘要:示例說明請求的中包含并且以結(jié)尾的,全部禁止訪問。測試鏈接匹配不匹配基于訪問控制比多了請求的參數(shù)。訪問控制和參數(shù)調(diào)優(yōu)只記錄其中一些部分,有些可能會在工作中用到,的配置后續(xù)再作筆記吧,春招筆試好難呀,努力學習吧 Nginx全局變量 Nginx中有很多的全局變量,可以通過$變量名來使用。下面列舉一些常用的全局變量: 變量 說明 $args 請求中的參數(shù),如www.123.com/1...

    miguel.jiang 評論0 收藏0
  • swagger系列三:結(jié)合Nginx訪問控制及swagger常見問題解決

    摘要:再結(jié)合模塊來增強安全性。如查看結(jié)果基本認證與地址訪問限制相結(jié)合。配置重啟訪問不輸入賬戶密碼或賬戶密碼錯誤訪問常見問題右下角錯誤點擊可見解決方法在使用時它會調(diào)用一個遠程驗證,在中添加關(guān)閉遠程驗證即可。 1. 用HTTP基本身份驗證限制訪問 在swagger生成的文檔放在公網(wǎng)上的時候,就暴露了接口,有了安全隱患。nginx的ngx_http_auth_basic_module模塊為我們提供...

    王偉廷 評論0 收藏0

發(fā)表評論

0條評論

AndroidTraveler

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<