亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文搞懂Nginx限流(簡單實現)

 更新時間:2019年05月28日 09:32:27   作者:技術大咖秀  
這篇文章主要介紹了一文搞懂Nginx限流(簡單實現),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Nginx現在已經是最火的負載均衡之一,在流量陡增的互聯(lián)網面前,接口限流也是很有必要的,尤其是針對高并發(fā)的場景。Nginx的限流主要是兩種方式:限制訪問頻率和限制并發(fā)連接數。

限流(rate limiting)是NGINX眾多特性中最有用的,也是經常容易被誤解和錯誤配置的,特性之一。該特性可以限制某個用戶在一個給定時間段內能夠產生的HTTP請求數。請求可以簡單到就是一個對于主頁的GET請求或者一個登陸表格的POST請求。
限流也可以用于安全目的上,比如減慢暴力密碼破解攻擊。通過限制進來的請求速率,并且(結合日志)標記出目標URLs來幫助防范DDoS攻擊。一般地說,限流是用在保護上游應用服務器不被在同一時刻的大量用戶請求湮沒。

NGINX限流是如何工作的

NGINX限流使用漏桶算法(leaky bucket algorithm),該算法廣泛應用于通信和基于包交換計算機網絡中,用來處理當帶寬被限制時的突發(fā)情況。和一個從上面進水,從下面漏水的桶的原理很相似;如果進水的速率大于漏水的速率,這個桶就會發(fā)生溢出。

在請求處理過程中,水代表從客戶端來的請求,而桶代表了一個隊列,請求在該隊列中依據先進先出(FIFO)算法等待被處理。漏的水代表請求離開緩沖區(qū)并被服務器處理,溢出代表了請求被丟棄并且永不被服務。

一、限制訪問頻率(正常流量)

Nginx中我們使用ngx_http_limit_req_module模塊來限制請求的訪問頻率,基于漏桶算法原理實現。接下來我們使用 nginx limit_req_zone 和 limit_req 兩個指令,限制單個IP的請求處理速率。

語法:limit_req_zone key zone rate

  • key :定義限流對象,binary_remote_addr 是一種key,表示基于 remote_addr(客戶端IP) 來做限流,binary_ 的目的是壓縮內存占用量。
  • zone:定義共享內存區(qū)來存儲訪問信息, myRateLimit:10m 表示一個大小為10M,名字為myRateLimit的內存區(qū)域。1M能存儲16000 IP地址的訪問信息,10M可以存儲16W IP地址訪問信息。
  • rate 用于設置最大訪問速率,rate=10r/s 表示每秒最多處理10個請求。Nginx 實際上以毫秒為粒度來跟蹤請求信息,因此 10r/s 實際上是限制:每100毫秒處理一個請求。這意味著,自上一個請求處理完后,若后續(xù)100毫秒內又有請求到達,將拒絕處理該請求。

二、限制訪問頻率(突發(fā)流量)

按上面的配置在流量突然增大時,超出的請求將被拒絕,無法處理突發(fā)流量,那么在處理突發(fā)流量的時候,該怎么處理呢?Nginx提供了 burst 參數來解決突發(fā)流量的問題,并結合 nodelay 參數一起使用。burst 譯為突發(fā)、爆發(fā),表示在超過設定的處理速率后能額外處理的請求數。

burst=20 nodelay表示這20個請求立馬處理,不能延遲,相當于特事特辦。不過,即使這20個突發(fā)請求立馬處理結束,后續(xù)來了請求也不會立馬處理。burst=20 相當于緩存隊列中占了20個坑,即使請求被處理了,這20個位置這只能按 100ms一個來釋放。這就達到了速率穩(wěn)定,但突然流量也能正常處理的效果。

三、限制并發(fā)連接數

Nginx 的ngx_http_limit_conn_module模塊提供了對資源連接數進行限制的功能,使用 limit_conn_zone 和 limit_conn 兩個指令就可以了。

limit_conn perip 20:對應的key是 $binary_remote_addr,表示限制單個IP同時最多能持有20個連接。 limit_conn perserver 100:對應的key是 $server_name,表示虛擬主機(server) 同時能處理并發(fā)連接的總數。注意,只有當 request header 被后端server處理后,這個連接才進行計數。

好了,以上幾種限流方式,你都清楚了嗎?

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • centos8安裝nginx1.9.1的詳細過程

    centos8安裝nginx1.9.1的詳細過程

    這篇文章主要介紹了centos8安裝nginx1.9.1的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • nginx部署多前端項目的幾種方法

    nginx部署多前端項目的幾種方法

    最近一臺服務器要配置多個前端項目,個人總結了3種方法來實現在一臺服務器上使用nginx部署多個前端項目的方法。需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Nginx session丟失問題處理解決方法

    Nginx session丟失問題處理解決方法

    這篇文章主要介紹了Nginx session丟失問題處理解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • Nginx服務器中瀏覽器本地緩存和虛擬機的相關設置

    Nginx服務器中瀏覽器本地緩存和虛擬機的相關設置

    這篇文章主要介紹了Nginx服務器中瀏覽器本地緩存和虛擬機的相關設置,是Nginx服務器搭建過程中的基本配置,需要的朋友可以參考下
    2015-08-08
  • 使用nginx+二級域名+https支持

    使用nginx+二級域名+https支持

    這篇文章主要介紹了使用nginx+二級域名+https支持,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Nginx配置之實現多臺服務器負載均衡

    Nginx配置之實現多臺服務器負載均衡

    這篇文章主要介紹了Nginx配置之實現多臺服務器負載均衡,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • Nginx URL重寫rewrite機制原理及使用實例

    Nginx URL重寫rewrite機制原理及使用實例

    這篇文章主要介紹了Nginx URL重寫(rewrite)機制原理及使用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • nginx與apache限制ip并發(fā)訪問 限制ip連接的設置方法

    nginx與apache限制ip并發(fā)訪問 限制ip連接的設置方法

    nginx限制ip并發(fā)數,也是說限制同一個ip同時連接服務器的數量,要使apache服務器做對同一IP地址的連接限制,需要mod_limitipconn來實現。一般需要手動編譯。不過模塊作者也提供了一些編譯好的模塊,根據自己的apache版本可以直接使用
    2012-11-11
  • Nginx代理axios請求以及注意事項詳解

    Nginx代理axios請求以及注意事項詳解

    這篇文章主要給大家介紹了關于Nginx代理axios請求以及注意事項的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • Nginx暴露出請求的真實IP的問題

    Nginx暴露出請求的真實IP的問題

    在工作中,經常會用用戶實際請求的IP地址,本文主要介紹了Nginx暴露出請求的真實IP的問題,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10

最新評論