nginx篇(一)之nginx做限流

2021-10-21 08:36:05 字數 1658 閱讀 7740

限流演算法一般有兩種:

令牌桶演算法:

思路:1、按照一定速率向令牌桶投送令牌。令牌桶滿,則丟棄令牌 2、當請求過來時候,會經過乙個過濾器,過濾器過濾的請求會經過令牌桶處理。3、請求只有拿到令牌才能被執行,拿不到令牌的請求被快取 4、通過這種方式就能夠控制請求的流量,令牌新增的速度就是請求流量的速度。

漏桶演算法:

思路:請求先進入漏桶,漏桶以一定速率漏水,漏出的水會先處理,當水流遠遠大於漏桶漏水的速率,這個時候,水就會直接溢位。這裡可以把請求當作水,這就是漏桶演算法的大致思路。

nginx中主要通過漏桶演算法來做限流

下面介紹下nginx中限流的主要方式:

//一、單位時間訪問限流

檔案//*http模組中新增:

//限制請求

limit_req_zone $binary_remote_addr $uri zone=api_read:

20m rate=

20r/s;

//說明:上述命令語法為:limit_req_zone key zone rate

//1、key為定義限流物件,這裡的key為$binary_remote_addr,意思是對客戶端ip來進行限流

//2、zone:定義共享記憶體來儲存訪問資訊,api_read:20m 表示大小為20m,名字為api_reda的共享記憶體區域

//1m可以存放16000的ip位址訪問資訊

//3、rate就是訪問速率,表示每秒能夠接收多少請求。20r/s就是每秒最多處理20個請求

//*location模組中新增

limit_req zone=api_read burst=

25 nodelay;

//說明:

//1、zone=api_read共享記憶體資訊

//2、burst=25 burst表示突發流量處理,如果流量突然增大超出rate=20r/s,超出的請求將被拒絕,無法處理突發流量。

//burst就是來解決這個問題的,表示超過設定的處理速率後能額外處理的請求數

//相當於快取佇列中加多了25個坑來存放這些多出的請求,如果請求還是多於這些坑,將被拒絕

//3、nodelay 立即執行 delay延遲執行 (併發超出的請求)```

### 二、限制併發連線數

```bash

檔案//*http模組中新增:

//限制併發連線數量

limit_conn_zone $binary_remote_addr zone=perip_conn:

10m;

//根據ip來限制

limit_conn_zone $server_name zone=perserver_conn:

100m;

//根據server_name來限制

//*location模組中新增

//連線數限制,每個ip併發請求為2

limit_conn perip_conn 2

;//服務所限制的連線數(即限制了該server併發連線數量)

limit_conn perserver_conn 1000

;```

以上就是我所了解的兩種nginx限流的方式,如有錯誤,希望大佬指出

NGINX之安裝篇

今天開始我們一步一步在乙個純淨系統搭建乙個nginx執行環境並進行相關配置.環境搭建 首先要有乙個linux環境,這裡我們使用金山網遊伺服器普遍使用的linux版本centos.centos是基於redhat enterprise linux源 重新編譯並去除redhat徽標的產物。centos完全...

後端開發之Nginx篇 Nginx高階

我們之前使用tomcat作為web容器裝載前後端服務時,我們使用的是springboot的cors來解決跨域的問題,然而當我們使用nginx來請求後端server所對映的靜態資源時,同樣存在跨域的安全性,這就需要我們在 nginx中設定跨域 server其實上面配置的和我們在springboot上面...

Nginx詳解十三 Nginx場景實踐篇之防盜煉

防盜煉 目的 防止資源被盜用 防盜煉設定思路 首要方式 區別哪些請求是非正常的使用者請求 配置語法 valid refer none bloked server names string 預設狀態 配置方法 server location reload一下,再請求 把access.log開啟再重新整...