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

Nginx限流和黑名單配置的策略

 更新時間:2022年05月18日 09:12:23   作者:趙廣陸  
這篇文章主要介紹了Nginx限流和黑名單配置,Nginx的限流主要是兩種方式,限制訪問頻率和限制并發(fā)連接數(shù),Nginx?按請求速率限速模塊使用的是漏桶算法,即能夠強行保證請求的實時處理速度不會超過設(shè)置的閾值,感興趣的朋友跟隨小編一起看看吧

1 背景介紹

為了防止一些搶票助手所發(fā)起的一些無用請求,我們可以使用 nginx 中的限流策略進行限流操作。
常見的限流算法:計數(shù)器、漏桶算法、令牌桶算法

Java高并發(fā)系統(tǒng)限流算法的應(yīng)用

在這里插入圖片描述

從作用上來說,漏桶和令牌桶算法最明顯的區(qū)別就是是否允許突發(fā)流量(burst)的處理,漏桶算法能夠強行限制數(shù)據(jù)的實時傳輸(處理)速率,對突發(fā)流量不做額外處理;而令牌桶算法能夠在限制數(shù)據(jù)的平均傳輸速率的同時允許某種程度的突發(fā)傳輸。

2 Nginx 的限流策略

Nginx 的限流主要是兩種方式: 限制訪問頻率限制并發(fā)連接數(shù)
Nginx 按請求速率限速模塊使用的是漏桶算法,即能夠強行保證請求的實時處理速度不會超過設(shè)置的閾值。

Nginx 官方版本限制 IP 的連接和并發(fā)分別有兩個模塊:
1、limit_req_zone:用來限制單位時間內(nèi)的請求數(shù),即速率限制 , 采用的漏桶算法 “leaky bucket”。
2、limit_conn_zone:用來限制同一時間連接數(shù),即并發(fā)限制。

2.1 limit_req_zone限制訪問頻率

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

舉例:

http {
# 定義限流策略
limit_req_zone $binary_remote_addr zone=rateLimit:10m rate=1r/s ;
# 搜索服務(wù)的虛擬主機
server {
location / {
# 使用限流策略,burst=5,重點說明一下這個配置,burst 爆發(fā)的意思,這個配置的意思是設(shè)置一個大小為 5 的緩沖區(qū)(隊列)當(dāng)有大量請求(爆發(fā))過來時,

# 超過了訪問頻次限制的請求可以先放到這個緩沖區(qū)內(nèi)。nodelay,如果設(shè)置,超過訪問頻次而且緩沖區(qū)也滿了的時候就會直接返回 503,如果沒有設(shè)置,則所

# 有請求會等待排隊。
limit_req zone=rateLimit burst=5 nodelay;
proxy_pass http://train-manager-search ;
   }
  }
}

頻繁訪問:

在這里插入圖片描述

2.2 limit_conn_zone限制最大連接數(shù)

使用語法:limit_conn_zone key zone
key :定義限流對象,binary_remote_addr 是一種 key,表示基于 remote_addr(客戶端 IP) 來做限流,binary_ 的目的是壓縮內(nèi)存占用量。
zone:定義共享內(nèi)存區(qū)來存儲訪問信息, myRateLimit:10m 表示一個大小為 10M,名字為 myRateLimit 的內(nèi)存區(qū)域。1M 能存儲 16000 IP 地址的
訪問信息,10M 可以存儲 16W IP 地址訪問信息。
舉例:

http {
# 定義限流策略
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
# 搜索服務(wù)的虛擬主機
server {
location / {
# 對應(yīng)的 key 是 $binary_remote_addr,表示限制單個 IP 同時最多能持有 1 個連接。
limit_conn perip 1;
# 對應(yīng)的 key 是 $server_name,表示虛擬主機(server) 同時能處理并發(fā)連接的總數(shù)。注意,只有當(dāng) request header 被
后端 server 處理后,這個連接才進行計數(shù)。
limit_conn perserver 10 ;
proxy_pass http://train-manager-search ;
    }
  }
}

3 黑名單設(shè)置

有時候會有一些惡意IP攻擊服務(wù)器,會基于程序頻繁發(fā)起請求對服務(wù)器造成巨大壓力,我們此時可以使用Nginx的黑名單功能實現(xiàn)黑名單過濾操作。我們首先需要配置黑名單IP,黑名單IP我們可以記錄到一個配置文件中,比如配置到blockip.conf文件中:

配置固定IP為黑名單:

deny 192.168.100.1;

nginx.conf中引入blockip.conf,可以放到http, server, location語句塊,配置如下:

#黑名單
include blockip.conf;

此時在192.168.100.1的IP上訪問服務(wù)器,會報如下錯誤:

image-20211219134233294

屏蔽ip的配置文件既可以屏蔽單個ip,也可以屏蔽ip段,或者只允許某個ip或者某個ip段訪問。

# 屏蔽單個ip訪問
deny IP;
# 允許單個ip訪問
allow IP;
# 屏蔽所有ip訪問
deny all;
# 允許所有ip訪問
allow all;
#屏蔽整個段即從123.0.0.1到123.255.255.254訪問的命令
deny 123.0.0.0/8
#屏蔽IP段即從123.45.0.1到123.45.255.254訪問的命令
deny 124.45.0.0/16
#屏蔽IP段即從123.45.6.1到123.45.6.254訪問的命令
deny 123.45.6.0/24
1234567891011121314

如果你想實現(xiàn)這樣的應(yīng)用,除了幾個IP外,其他全部拒絕,那需要你在blockip.conf中這樣寫:

allow 192.168.100.1;
allow 192.168.100.2;
deny all;
123

但是這種手動配置的方式可能太過繁瑣,我們也可以配置動態(tài)黑白名單。

配置動態(tài)黑白名單,我們可以采用Lua+Redis實現(xiàn),將黑名單存入到Redis緩存,每次執(zhí)行請求時,通過lua腳本先獲取用戶IP,匹配IP是否屬于黑名單,如果是,則不讓請求,如果不是,則放行。

到此這篇關(guān)于Nginx限流和黑名單配置的文章就介紹到這了,更多相關(guān)nginx限流配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nginx結(jié)合keepalived實現(xiàn)高可用的完整步驟

    nginx結(jié)合keepalived實現(xiàn)高可用的完整步驟

    這篇文章主要給大家介紹了關(guān)于nginx結(jié)合keepalived實現(xiàn)高可用的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用nginx具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • nginx目錄路徑重定向的方法

    nginx目錄路徑重定向的方法

    這篇文章主要介紹了nginx目錄路徑重定向的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • NGINX阻止指定ip的請求問題及解決方案

    NGINX阻止指定ip的請求問題及解決方案

    web頁面做了一個功能,在websocket請求失敗的情況,會定時向服務(wù)端進行重試進行建立連接,這篇文章給大家介紹NGINX阻止指定ip的請求問題及解決方案,感興趣的朋友一起看看吧
    2024-02-02
  • Nginx高可用Keepalived的具體使用

    Nginx高可用Keepalived的具體使用

    Keepalived是一種實現(xiàn)高可用的軟件,基于VRRP協(xié)議,可以自動將虛擬IP地址切換到備用服務(wù)器,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • 訪問nginx顯示未找到站點的問題分析及解決方案

    訪問nginx顯示未找到站點的問題分析及解決方案

    當(dāng)我們在安裝好nginx準備訪問80端口時,突然出現(xiàn)您的請求在Web服務(wù)器中沒有找到對應(yīng)的站點,所以本文給大家介紹了訪問nginx顯示未找到站點的問題分析及解決方案,需要的朋友可以參考下
    2024-03-03
  • nginx服務(wù)器通過配置來解決API的跨域問題

    nginx服務(wù)器通過配置來解決API的跨域問題

    這篇文章主要給大家介紹了關(guān)于nginx服務(wù)器是如何配置來解決API跨域問題的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 詳解nginx驚群問題的解決方式

    詳解nginx驚群問題的解決方式

    這篇文章主要介紹了詳解nginx驚群問題的解決方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 如何配置nginx成功代理websocket

    如何配置nginx成功代理websocket

    配置Nginx作為WebSocket代理是一種常見的設(shè)置,以便在Nginx服務(wù)器上實現(xiàn)WebSocket連接的轉(zhuǎn)發(fā)和負載均衡,這篇文章主要介紹了配置nginx以成功代理websocket,需要的朋友可以參考下
    2024-02-02
  • Nginx實現(xiàn)跨域使用字體文件的配置詳解

    Nginx實現(xiàn)跨域使用字體文件的配置詳解

    這篇文章主要給大家介紹了關(guān)于Nginx實現(xiàn)跨域使用字體文件的配置方法,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • 使用ngxtop實時監(jiān)控Nginx日志文件的示例代碼

    使用ngxtop實時監(jiān)控Nginx日志文件的示例代碼

    在Nginx日志分析領(lǐng)域,ngxtop是一款強大的實時監(jiān)控工具,它能夠即時解析Nginx的訪問日志文件,提供直觀、可定制的實時統(tǒng)計信息,幫助管理員更好地了解服務(wù)器的運行狀況和Web流量,本文給大家介紹使用ngxtop實時監(jiān)控Nginx日志文件的示例代碼,需要的朋友可以參考下
    2024-01-01

最新評論

临城县| 西平县| 玉林市| 鱼台县| 邢台市| 保靖县| 同仁县| 澳门| 老河口市| 宁乡县| 永定县| 东乌| 惠水县| 新乡县| 永顺县| 曲周县| 甘孜| 东源县| 江城| 延吉市| 平乐县| 柘城县| 三明市| 开江县| 新干县| 青神县| 集贤县| 高邑县| 韶山市| 十堰市| 浏阳市| 嘉禾县| 炎陵县| 卢氏县| 桓台县| 泰安市| 塔河县| 体育| 襄汾县| 武强县| 洪泽县|