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

Nginx使用limit_req_zone對同一IP訪問進(jìn)行限流的方法

 更新時間:2019年08月30日 10:40:26   作者:可可keketrtr  
今天小編就為大家分享一篇Nginx使用limit_req_zone對同一IP訪問進(jìn)行限流的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

nginx可以使用ngx_http_limit_req_module模塊的limit_req_zone指令進(jìn)行限流訪問,防止用戶惡意攻擊刷爆服務(wù)器。ngx_http_limit_req_module模塊是nginx默認(rèn)安裝的,所以直接配置即可。

首先,在nginx.conf文件中的http模塊下配置

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

說明:區(qū)域名稱為one(自定義),占用空間大小為10m,平均處理的請求頻率不能超過每秒一次。

$binary_remote_addr是$remote_addr(客戶端IP)的二進(jìn)制格式,固定占用4個字節(jié)(可能是C語言的long類型長度)。而$remote_addr按照字符串存儲,占用7-15個字節(jié)。這樣看來用$binary_remote_addr可以節(jié)省空間,但網(wǎng)上又說64位系統(tǒng)下都是占用64個字節(jié),沒搞清楚,總之盡量用$binary_remote_addr吧。

第二,在http模塊的子模塊server下面配置

location ~* .htm$ {
limit_req zone=one burst=5 nodelay;
proxy_pass http://backend_tomcat;
}

我這里是對uri后綴為htm的請求限流,注意limit_req zone=one burst=5 nodelay;

其中zone=one和前面的定義對應(yīng)。

burst這個網(wǎng)上都說峰值之類的,通過親自試驗發(fā)現(xiàn)這么說并不準(zhǔn)確,應(yīng)該叫緩沖隊列的長度比較合適。

nodelay字面的意思是不延遲,具體說是對用戶發(fā)起的請求不做延遲處理,而是立即處理。比如我上面定義的rate=1r/s,即每秒鐘只處理1個請求。如果同一時刻有兩個后綴為htm的請求過來了,若設(shè)置了nodelay,則會立刻處理這兩個請求。若沒設(shè)置nodelay,則會嚴(yán)格執(zhí)行rate=1r/s的配置,即只處理一個請求,然后下一秒鐘再處理另外一個請求。直觀的看就是頁面數(shù)據(jù)卡了,過了一秒后才加載出來。

真正對限流起作用的配置就是rate=1r/s和burst=5這兩個配置。下面我們來分析一下具體案例。

某一時刻有兩個請求同時到達(dá)nginx,其中一個被處理,另一個放到了緩沖隊列里。雖然配置了nodelay導(dǎo)致第二個請求也被瞬間處理了,但還是占用了緩沖隊列的一個長度,如果下一秒沒有請求過來,這個占用burst一個長度的空間就會被釋放,否則就只能繼續(xù)占用著burst的空間,直到burst空間占用超過5之后,再來請求就會直接被nginx拒絕,返回503錯誤碼。

可見,如果第二秒又來了兩個請求,其中一個請求又占用了一個burst空間,第三秒、第四秒直到第五秒,每秒都有兩個請求過來,雖然兩個請求都被處理了(因為配置了nodelay),但其中一個請求仍然占用了一個burst長度,五秒后整個burst長度=5都被占用了。第六秒再過來兩個請求,其中一個請求就被拒絕了。

這是我根據(jù)實際測試結(jié)果推論的,可能和真實的理論有所出入,但這樣講我覺得比較好理解。有清楚的朋友歡迎告知!

這里用到的$binary_remote_addr是在客戶端和nginx之間沒有代理層的情況。如果你在nginx之前配置了CDN,那么$binary_remote_addr的值就是CDN的IP地址。這樣限流的話就不對了。需要獲取到用戶的真實IP進(jìn)行限流。

簡單說明如下:

## 這里取得原始用戶的IP地址
map $http_x_forwarded_for $clientRealIp {
"" $remote_addr;
~^(?P<firstAddr>[0-9\.]+),?.*$$firstAddr;
}

## 針對原始用戶 IP 地址做限制
limit_req_zone $clientRealIp zone=one:10m rate=1r/s;

同理,我們可以用limit模塊對網(wǎng)絡(luò)爬蟲進(jìn)行限流。

http模塊

limit_req_zone $anti_spider zone=anti_spider:10m rate=1r/s;

server模塊

location / {

limit_req zone=anti_spider burst=2 nodelay;
if ($http_user_agent ~* "spider|Googlebot") {
set $anti_spider $http_user_agent;
}

}

可以用curl -I -A "Baiduspider" www.remotejob.cn/notice.jsp 測試一下

以上這篇Nginx使用limit_req_zone對同一IP訪問進(jìn)行限流的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

    這篇文章主要介紹了詳解nginx驚群問題的解決方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 利用nginx實現(xiàn)動靜分離的負(fù)載均衡集群實戰(zhàn)教程

    利用nginx實現(xiàn)動靜分離的負(fù)載均衡集群實戰(zhàn)教程

    這篇文章介紹了利用nginx實現(xiàn)動靜分離的負(fù)載均衡集群實戰(zhàn),本次用到的操作系統(tǒng)及服務(wù),本次實驗一共需要3臺服務(wù)器,一臺nginx做為負(fù)載均衡分發(fā)器和動靜分離的分發(fā)器,兩臺apache做為后端服務(wù)器,使用nginx實現(xiàn)兩臺apache服務(wù)器的負(fù)載均衡和動靜分離,需要的朋友可以參考下
    2023-03-03
  • Linux下安裝配置nginx詳解

    Linux下安裝配置nginx詳解

    本篇文章主要介紹了Linux下安裝配置nginx,介紹了在Linux系統(tǒng)下安裝配置Nginx的詳細(xì)過程,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • Nginx中return和rewrite的寫法及區(qū)別淺析

    Nginx中return和rewrite的寫法及區(qū)別淺析

    在Nginx中,return和rewrite都用于重定向,但有所區(qū)別,return立即終止請求并返回指定HTTP狀態(tài)碼,不額外請求,rewrite則重寫URI并引發(fā)新請求,需要的朋友可以參考下
    2024-09-09
  • nginx部署前端項目的超級詳細(xì)步驟記錄

    nginx部署前端項目的超級詳細(xì)步驟記錄

    眾所周知Nginx是一款高性能的http服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,這篇文章主要給大家介紹了關(guān)于nginx部署前端項目的超級詳細(xì)步驟,需要的朋友可以參考下
    2023-02-02
  • keepalived監(jiān)控nginx進(jìn)程的實現(xiàn)示例

    keepalived監(jiān)控nginx進(jìn)程的實現(xiàn)示例

    本文主要介紹了keepalived監(jiān)控nginx進(jìn)程的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • nginx網(wǎng)頁緩存時間的配置過程

    nginx網(wǎng)頁緩存時間的配置過程

    Nginx緩存的設(shè)置可以提高網(wǎng)站性能,對于網(wǎng)站的圖片,尤其是新聞網(wǎng)站,下面這篇文章主要給大家介紹了關(guān)于nginx網(wǎng)頁緩存時間的配置過程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • 常見的Nginx配置誤區(qū)

    常見的Nginx配置誤區(qū)

    對很多人而言,配置Nginx+PHP無外乎就是搜索一篇教程,然后拷貝粘貼。聽上去似乎也沒什么問題,可惜實際上網(wǎng)絡(luò)上很多資料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷貝粘貼,早晚有一天會為此付出代價
    2014-03-03
  • nginx里集成php模塊安裝配置步驟詳解

    nginx里集成php模塊安裝配置步驟詳解

    這篇文章主要為大家介紹了nginx里集成php模塊安裝配置步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細(xì)過程

    Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細(xì)過程

    今天通過本文給大家分享Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細(xì)過程,在這小編提示大家在安裝nginx時需要先安裝nginx-full,具體安裝方法跟隨小編一起通過本文學(xué)習(xí)下吧
    2021-05-05

最新評論

巩义市| 桐城市| 墨竹工卡县| 哈尔滨市| 改则县| 柘城县| 金乡县| 宜兰县| 张掖市| 溧水县| 梁山县| 南通市| 永和县| 玉环县| 遂昌县| 平乡县| 石屏县| 互助| 秀山| 永定县| 小金县| 吉水县| 久治县| 定结县| 梁山县| 双城市| 拜泉县| 台江县| 泸溪县| 凤山市| 颍上县| 工布江达县| 西林县| 涿州市| 兴城市| 松滋市| 思茅市| 阜平县| 齐齐哈尔市| 甘泉县| 铁力市|