最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Nginx 對訪問量的控制

 更新時間:2018年12月28日 10:35:24   作者:路飛君1234  
本文詳解的介紹了 Nginx 的 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊,對請求訪問量進行控制。非常具有實用價值,需要的朋友可以參考下

目的

了解 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)卡,每個模塊負責(zé)特定的功能,例如實現(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ù)器而言,當(dāng)遇到網(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 模塊負責(zé)實現(xiàn)。

ngx_http_limit_conn_module 模塊

說明

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

參數(shù)配置

limit_conn_zone

指令配置 limit_conn_zone key zone=name:size
配置的上下文:http
說明:key 是 Nginx 中的變量,通常為 binaryremoteaddr|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
說明:當(dāng)訪問達到最大限制之后,會將訪問情況記錄在日志中

limit_conn

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

limit_conn_status

語法:limit_conn_status code
默認值:503
配置上下文:http,server,location
說明:當(dāng)訪問超過限制 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 配合,當(dāng)流量超過 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ā)訪問
  }
  # 當(dāng)超過并發(fā)訪問限制時,返回503錯誤頁面
  error_page 503 /503.html;
}

ngx_http_limit_req_module 模塊

說明

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

參數(shù)配置

limit_req_zone

語法:limit_req_zone key zone=name:size rate=rate
配置上下文:http
說明:key 是 Nginx 中的變量,通常為 binaryremoteaddr|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決定當(dāng)請求超量是,是等待處理還是返回錯誤碼;

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;
  }
  # 當(dāng)超過并發(fā)訪問限制時,返回503錯誤頁面
  error_page 503 /503.html;
}

注意

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

小結(jié)

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決Nginx配置靜態(tài)資源文件404 Not Found問題

    解決Nginx配置靜態(tài)資源文件404 Not Found問題

    在使用Nginx作為靜態(tài)資源服務(wù)器時,如果配置了根目錄root導(dǎo)致404錯誤,而使用前綴URL配置alias則需要正確處理目錄路徑,使用alias時要確保目錄名后加‘/’,并且在需要時使用root和alias配置,本文介紹Nginx配置靜態(tài)資源文件404 Not Found問題解決方法,感興趣的朋友一起看看吧
    2025-03-03
  • Nginx服務(wù)器中處理AJAX跨域請求的配置方法講解

    Nginx服務(wù)器中處理AJAX跨域請求的配置方法講解

    這篇文章主要介紹了Nginx服務(wù)器中處理AJAX跨域請求的配置方法講解,包括Nginx作Apache的反向代理時的配置方法,需要的朋友可以參考下
    2016-01-01
  • Nginx啟動時80端口被占用的問題解決

    Nginx啟動時80端口被占用的問題解決

    本文主要介紹了在啟動Nginx時遇到80端口被占用的問題及解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Nginx配置React項目Url后直接輸入路由路徑時報404問題的解決

    Nginx配置React項目Url后直接輸入路由路徑時報404問題的解決

    這篇文章主要給大家介紹了關(guān)于Nginx配置React項目Url后面直接輸入路由路徑時報404問題的解決方法,文中通過示例代碼將解決的方法介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Nginx?限流和流量控制的實現(xiàn)

    Nginx?限流和流量控制的實現(xiàn)

    Nginx通過limit_req和limit_conn模塊提供請求次數(shù)和并發(fā)連接數(shù)限制,防止服務(wù)器過載,本文就來介紹一下Nginx?限流和流量控制的實現(xiàn),感興趣的可以了解一下
    2024-09-09
  • Nginx工作模式及代理配置的使用細節(jié)

    Nginx工作模式及代理配置的使用細節(jié)

    這篇文章主要為大家介紹了Nginx工作模式及代理配置的使用細節(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • nginx實現(xiàn)http轉(zhuǎn)換為https的項目實踐

    nginx實現(xiàn)http轉(zhuǎn)換為https的項目實踐

    Nginx作為Web服務(wù)器時,可以通過配置實現(xiàn)HTTP跳轉(zhuǎn)HTTPS,本文主要介紹了nginx實現(xiàn)http轉(zhuǎn)換為https的實踐,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • k8s部署nginx訪問Tomcat的實現(xiàn)示例

    k8s部署nginx訪問Tomcat的實現(xiàn)示例

    本文介紹了如何使用Kubernetes部署Nginx,并通過Nginx訪問Tomcat,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • nginx從編譯安裝到配置文件說明中文詳細介紹

    nginx從編譯安裝到配置文件說明中文詳細介紹

    Nginx配置文件主要分成四部分:main(全局設(shè)置)、server(主機設(shè)置)、upstream(上游服務(wù)器設(shè)置,主要為反向代理、負載均衡相關(guān)配置)和 location(URL匹配特定位置后的設(shè)置)
    2018-10-10
  • Nginx配置文件(nginx.conf)配置詳解(總結(jié))

    Nginx配置文件(nginx.conf)配置詳解(總結(jié))

    本篇文章主要介紹了Nginx配置文件(nginx.conf)配置詳解,這對初學(xué)者有一定的參考價值,有興趣的可以了解一下。
    2016-12-12

最新評論

黔西| 林周县| 双辽市| 边坝县| 宁明县| 宣恩县| 南安市| 黎城县| 芷江| 灵寿县| 灵璧县| 沐川县| 南华县| 江孜县| 荥阳市| 天镇县| 通山县| 临猗县| 新密市| 柘荣县| 昌图县| 桂平市| 东兰县| 灵武市| 瑞丽市| 白水县| 红原县| 苏尼特右旗| 承德市| 大余县| 青田县| 长宁区| 甘德县| 新蔡县| 饶平县| 大宁县| 肇源县| 德兴市| 株洲市| 正安县| 襄樊市|