婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > nginx 流量控制以及訪問控制的實現

nginx 流量控制以及訪問控制的實現

熱門標簽:電話機器人服務差 蘭州語音電銷機器人軟件 電銷機器人對公司貢獻 宿州防封外呼系統廠家 山東400電話如何辦理 智能外呼系統如何部署 高德地圖標注在建線路 ai電銷機器人 如何開發 濟源電話外呼系統怎么樣

nginx 流量控制

流量限制 (rate-limiting),是Nginx中一個非常實用,卻經常被錯誤理解和錯誤配置的功能。我們可以用來限制用戶在給定時間內HTTP請求的數量。請求,可以是一個簡單網站首頁的GET請求,也可以是登錄表單的 POST 請求。流量限制可以用作安全目的,比如可以減慢暴力密碼破解的速率。通過將傳入請求的速率限制為真實用戶的典型值,并標識目標URL地址(通過日志),還可以用來抵御 DDOS 攻擊。更常見的情況,該功能被用來保護上游應用服務器不被同時太多用戶請求所壓垮。

以下將會介紹Nginx的 流量限制 的基礎知識和高級配置,”流量限制”在Nginx Plus中也適用。

1、Nginx如何限流

Nginx的”流量限制”使用漏桶算法(leaky bucket algorithm),該算法在通訊和分組交換計算機網絡中廣泛使用,用以處理帶寬有限時的突發情況。就好比,一個桶口在倒水,桶底在漏水的水桶。如果桶口倒水的速率大于桶底的漏水速率,桶里面的水將會溢出;同樣,在請求處理方面,水代表來自客戶端的請求,水桶代表根據”先進先出調度算法”(FIFO)等待被處理的請求隊列,桶底漏出的水代表離開緩沖區被服務器處理的請求,桶口溢出的水代表被丟棄和不被處理的請求。

2、配置基本的限流

“流量限制”配置兩個主要的指令,limit_req_zonelimit_req,如下所示:

192.168.62.155配置:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
upstream myweb {
    server 192.168.62.157:80 weight=1 max_fails=1 fail_timeout=1;
    }
server {
    listen 80;
    server_name localhost;

    location /login {
        limit_req zone=mylimit;
        proxy_pass http://myweb;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
192.168.62.157配置:
server {
    listen 80;
    server_name localhost;
    location /login {
        root  /usr/share/nginx/html;
        index  index.html index.html;
        }
}


連點兩次后

limit_req_zone指令定義了流量限制相關的參數,而limit_req指令在出現的上下文中啟用流量限制(示例中,對于”/login/”的所有請求)。

limit_req_zone指令通常在HTTP塊中定義,使其可在多個上下文中使用,它需要以下三個參數:

  • Key - 定義應用限制的請求特性。示例中的 Nginx 變量$binary_remote_addr,保存客戶端IP地址的二進制形式。這意味著,我們可以將每個不同的IP地址限制到,通過第三個參數設置的請求速率。(使用該變量是因為比字符串形式的客戶端IP地址$remote_addr,占用更少的空間)
  • Zone - 定義用于存儲每個IP地址狀態以及被限制請求URL訪問頻率的共享內存區域。保存在內存共享區域的信息,意味著可以在Nginx的worker進程之間共享。定義分為兩個部分:通過zone=keyword標識區域的名字,以及冒號后面跟區域大小。16000個IP地址的狀態信息,大約需要1MB,所以示例中區域可以存儲160000個IP地址。
  • Rate - 定義最大請求速率。在示例中,速率不能超過每秒1個請求。Nginx實際上以毫秒的粒度來跟蹤請求,所以速率限制相當于每1000毫秒1個請求。因為不允許”突發情況”(見下一章節),這意味著在前一個請求1000毫秒內到達的請求將被拒絕。

limit_req_zone指令設置流量限制和共享內存區域的參數,但實際上并不限制請求速率。所以需要通過添加

limit_req指令,將流量限制應用在特定的location或者server塊。在上面示例中,我們對/login/請求進行流量限制。

現在每個IP地址被限制為每秒只能請求1次/login/,更準確地說,在前一個請求的1000毫秒內不能請求該URL。

3、處理突發

如果我們在1000毫秒內接收到2個請求,怎么辦?對于第二個請求,Nginx將給客戶端返回錯誤。這可能并不是我們想要的結果,因為應用本質上趨向于突發性。相反地,我們希望緩沖任何超額的請求,然后及時地處理它們。我們更新下配置,在limit_req中使用burst參數:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
    upstream myweb {
        server 192.168.62.157:80 weight=1 max_fails=1 fail_timeout=1;
        }
       
    server {
        listen 80;
        server_name localhost;
        location /login {
            limit_req zone=mylimit burst=20;
            proxy_pass http://myweb;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }

burst參數定義了超出zone指定速率的情況下(示例中的mylimit區域,速率限制在每秒10個請求,或每100毫秒一個請求),客戶端還能發起多少請求。上一個請求100毫秒內到達的請求將會被放入隊列,我們將隊列大小設置為20。

這意味著,如果從一個給定IP地址發送21個請求,Nginx會立即將第一個請求發送到上游服務器群,然后將余下20個請求放在隊列中。然后每100毫秒轉發一個排隊的請求,只有當傳入請求使隊列中排隊的請求數超過20時,Nginx才會向客戶端返回錯誤。

4、配置流量控制相關功能

1、配置日志記錄

默認情況下,Nginx會在日志中記錄由于流量限制而延遲或丟棄的請求,如下所示:

2019/02/13 04:20:00 [error] 120315#0: *32086 limiting requests, excess: 1.000 by zone "mylimit", client: 192.168.1.2, server: nginx.com, request: "GET / HTTP/1.0", host: "nginx.com"

日志條目中包含的字段:

  • limiting requests - 表明日志條目記錄的是被“流量限制”請求
  • excess - 每毫秒超過對應“流量限制”配置的請求數量
  • zone - 定義實施“流量限制”的區域
  • client - 發起請求的客戶端IP地址
  • server - 服務器IP地址或主機名
  • request - 客戶端發起的實際HTTP請求
  • host - HTTP報頭中host的值

默認情況下,Nginx以error級別來記錄被拒絕的請求,如上面示例中的[error]所示(Nginx以較低級別記錄延時請求,一般是info級別)。如要更改Nginx的日志記錄級別,需要使用limit_req_log_level指令。這里,我們將被拒絕請求的日志記錄級別設置為warn

一定要定義日志位置和級別才可以:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
    upstream myweb {
        server 192.168.62.157:80 weight=1 max_fails=1 fail_timeout=1;
        }
    server {
        listen 80;
        server_name localhost;

        location /login {
            limit_req zone=mylimit burst=20;
            limit_req_log_level warn;
            proxy_pass http://myweb;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }

繼續訪問測試,看error.log日志

2、發送到客戶端的錯誤代碼

一般情況下,客戶端超過配置的流量限制時,Nginx響應狀態碼為503(Service Temporarily Unavailable)。可以使用limit_req_status指令來設置為其它狀態碼(例如下面的404狀態碼):

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
	upstream myweb {
    	server 192.168.62.157:80 weight=1 max_fails=1 fail_timeout=1;
		}
	server {
    	listen 80;
    	server_name localhost;
		
    	location /login {
			limit_req zone=mylimit;
			limit_req_log_level warn;
			limit_req_status 404;
        	proxy_pass http://myweb;
          proxy_set_header Host $host:$server_port;
	      	proxy_set_header X-Real-IP $remote_addr;
      		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        	}
	}


5、nginx 流量控制總結

以上已經涵蓋了Nginx和Nginx Plus提供的“流量限制”的很多功能,包括為HTTP請求的不同location設置請求速率,給“流量限制”配置burst參數。

nginx 訪問控制

1、nginx 訪問控制模塊

(1)基于IP的訪問控制:http_access_module
(2)基于用戶的信任登錄:http_auth_basic_module

2、基于IP的訪問控制

1、配置語法

Syntax:allow address | CIDR | unix: | all;
default:默認無
Context:http,server,location

Syntax:deny address | CIDR | unix: | all;
default:默認無
Context:http,server,location

2、修改/etc/nginx/conf.d/access_mod.conf內容如下:

server {
    listen 80;
    server_name localhost;
    location ~ ^/admin {
        root /home/www/html;
        index index.html index.hml;
        deny 192.168.1.8;
        allow all;
        #deny 192.168.1.8;
        }
}
#需要注意:
如果先允許訪問,在定義拒絕訪問。那么拒絕訪問不生效。

虛擬機宿主機IP為192.168.1.8,虛擬機IP為192.168.1.11,故這里禁止宿主機訪問,允許其他所有IP訪問。
宿主機訪問http://192.168.1.11/admin,顯示403 Forbidden
當然也可以反向配置,同時也可以使用IP網段的配置方式,如allow 192.168.1.0/24;,表示滿足此網段的IP都可以訪問。

3、指定location拒絕所有請求

如果你想拒絕某個指定URL地址的所有請求,而不是僅僅對其限速,只需要在location塊中配置deny all指令:

server {
    listen 80;
    server_name localhost;
    location /foo.html {
        root /home/www/html;
        deny all;
        }
}

3、基于用戶的信任登錄

1、配置語法

Syntax:auth_basic string | off;
default:auth_basic off;
Context:http,server,location,limit_except

Syntax:auth_basic_user_file file;
default:默認無
Context:http,server,location,limit_except
file:存儲用戶名密碼信息的文件。

2、配置示例

改名access_mod.confauth_mod.conf,內容如下:

server {
	listen 80;
	server_name localhost;
	location ~ ^/admin {
		root /home/www/html;
		index index.html index.hml;
		auth_basic "Auth access test!";
		auth_basic_user_file /etc/nginx/auth_conf;
		}
}

auth_basic不為off,開啟登錄驗證功能,auth_basic_user_file加載賬號密碼文件。

3、建立口令文件

[root@192 ~]# mkdir /home/www/html/admin -p
[root@192 ~]# vim /home/www/html/admin
hello qf
[root@192 ~]# yum install -y httpd-tools #htpasswd 是開源 http 服務器 apache httpd 的一個命令工具,用于生成 http 基本認證的密碼文件
[root@192 ~]# htpasswd -cm /etc/nginx/auth_conf user10	//第一次新建用戶
[root@192 ~]# htpasswd -m /etc/nginx/auth_conf user20	//第二次添加用戶
[root@192 ~]# cat /etc/nginx/auth_conf
user10:$apr1$MOa9UVqF$RlYRMk7eprViEpNtDV0n40
user20:$apr1$biHJhW03$xboNUJgHME6yDd17gkQNb0

4、訪問測試

5、局限性

(1)用戶信息依賴文件方式
(2)操作管理機械,效率低下

到此這篇關于nginx 流量控制以及訪問控制的實現的文章就介紹到這了,更多相關nginx 流量控制及訪問控制內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:衡水 南寧 佛山 安陽 巴中 畢節 晉中 云南

巨人網絡通訊聲明:本文標題《nginx 流量控制以及訪問控制的實現》,本文關鍵詞  nginx,流量,控制,以及,訪問,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《nginx 流量控制以及訪問控制的實現》相關的同類信息!
  • 本頁收集關于nginx 流量控制以及訪問控制的實現的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品乱人伦| 欧美福利视频导航| 国产v日产∨综合v精品视频| 91免费看视频| 国产精品久久久久久久久动漫| 一区二区三区四区国产精品| 狠狠色综合播放一区二区| 99久久精品国产麻豆演员表| 欧美色视频一区| 伊人色综合久久天天| 99re这里只有精品首页| 亚洲欧洲av色图| 欧美系列在线观看| 美国十次了思思久久精品导航| 国产精品盗摄一区二区三区| 久久久久久久久免费| 91啪九色porn原创视频在线观看| 久久成人免费日本黄色| 国产精品色婷婷久久58| 自拍偷自拍亚洲精品播放| 日韩国产精品久久久久久亚洲| 精品少妇一区二区三区免费观看| 亚洲久草在线视频| 极品少妇一区二区三区精品视频| 欧美日韩电影一区| 亚洲视频一区在线观看| 麻豆久久一区二区| 免费成人结看片| 天堂在线亚洲视频| 久久午夜电影网| 色偷偷久久一区二区三区| 亚洲影院久久精品| 欧美精品一区二区三区在线 | 日日欢夜夜爽一区| 2019国产精品| 欧美亚洲日本国产| 国产精品一级片| 亚洲一区二区在线观看视频| 日韩精品一区二区三区中文精品| 99久免费精品视频在线观看| 日本女人一区二区三区| 国产精品色在线观看| 欧美一区二区三区视频在线 | 性欧美疯狂xxxxbbbb| 久久久久久久综合狠狠综合| 欧美日韩色综合| 91毛片在线观看| 成人亚洲一区二区一| 黑人巨大精品欧美黑白配亚洲| 亚洲bt欧美bt精品| 亚洲精品美国一| 亚洲四区在线观看| 国产日韩精品一区二区三区在线| 欧美一区二区免费视频| 欧美亚洲综合一区| 欧洲av一区二区嗯嗯嗯啊| 99精品欧美一区| 99久久99久久免费精品蜜臀| 国产成都精品91一区二区三 | 蜜臀va亚洲va欧美va天堂| 亚洲国产精品久久久久秋霞影院| 中文字幕巨乱亚洲| 国产欧美日韩精品一区| 亚洲精品一区二区在线观看| 6080午夜不卡| 日韩欧美亚洲国产另类| 一区二区三区欧美激情| 亚洲精品一区二区三区四区高清| 一本色道久久综合狠狠躁的推荐 | 亚洲私人影院在线观看| 国产精品白丝在线| 亚洲欧美日韩成人高清在线一区| 国产精品美女一区二区在线观看| 国产午夜亚洲精品理论片色戒| 日韩一区二区在线看| 精品剧情v国产在线观看在线| 日韩一级片网址| 精品国产一区二区三区av性色| 2023国产精品| 亚洲视频网在线直播| 亚洲主播在线观看| 麻豆国产91在线播放| 国产精品99精品久久免费| 亚洲高清不卡在线观看| 韩国女主播成人在线| 免费成人在线观看视频| 久久不见久久见免费视频7| 麻豆精品新av中文字幕| 国产一区欧美二区| 91丨porny丨最新| 欧美日韩国产123区| 精品国产99国产精品| 国产农村妇女精品| 亚洲一级二级三级| 美女视频免费一区| 成人激情黄色小说| 欧美调教femdomvk| 精品对白一区国产伦| 一区二区三区精品| 激情文学综合插| 91精品办公室少妇高潮对白| 精品欧美乱码久久久久久1区2区| 中文字幕亚洲视频| 91小视频在线观看| 国内精品国产成人国产三级粉色 | 欧美日韩亚洲综合一区| 久久综合色8888| 一二三四社区欧美黄| 国产在线播放一区二区三区| 成人美女在线观看| 欧美肥妇bbw| 中文字幕制服丝袜成人av| 丝袜亚洲另类欧美| 99久久亚洲一区二区三区青草 | 精品电影一区二区三区 | 久久成人av少妇免费| 99久久综合色| 久久久99久久| 久久国产剧场电影| 99国内精品久久| 久久亚洲一区二区三区明星换脸| 亚洲午夜私人影院| 国产99久久久久久免费看农村| 欧美久久久影院| 亚洲区小说区图片区qvod| 国产成人综合亚洲网站| 日韩欧美成人午夜| 天堂午夜影视日韩欧美一区二区| 91在线精品一区二区三区| 久久先锋影音av鲁色资源网| 日韩高清在线一区| 欧美日韩中文字幕一区二区| 亚洲美女区一区| fc2成人免费人成在线观看播放 | 青青草伊人久久| 欧美一区二区观看视频| 日本人妖一区二区| 日韩一区二区三区在线观看| 日韩主播视频在线| 日韩一区二区三区在线| 美洲天堂一区二卡三卡四卡视频| 欧美日韩免费高清一区色橹橹| 一区二区三区在线视频播放| 色婷婷久久久久swag精品 | 精品久久国产97色综合| 国产在线视频精品一区| 久久久精品免费免费| 国产伦精品一区二区三区视频青涩| 欧美一级欧美一级在线播放| 久久精品二区亚洲w码| 久久久久久久一区| 成人av网站在线观看| 中文字幕亚洲综合久久菠萝蜜| 99久久精品一区二区| 一区二区三区四区乱视频| 在线精品观看国产| 蜜臀99久久精品久久久久久软件| 91麻豆精品国产91久久久久久久久| 老司机精品视频导航| 国产欧美日韩中文久久| 色偷偷久久人人79超碰人人澡| 亚洲成人动漫精品| 日韩免费一区二区| 波多野结衣中文一区| 亚洲一区二区影院| 精品国精品自拍自在线| 成人性色生活片免费看爆迷你毛片| 亚洲美女屁股眼交3| 日韩一本二本av| 成人福利视频网站| 亚洲成在人线在线播放| 精品国产乱码久久久久久闺蜜| 成人中文字幕合集| 午夜国产精品一区| 国产精品日韩成人| 日韩一区国产二区欧美三区| www.欧美日韩国产在线| 日韩精品一级中文字幕精品视频免费观看 | 日韩精品电影在线观看| 久久色.com| 欧美日本视频在线| 大尺度一区二区| 麻豆91精品91久久久的内涵| 亚洲乱码一区二区三区在线观看| 精品国产一区二区三区四区四| 激情综合色综合久久综合| 伊人夜夜躁av伊人久久| 日韩美女天天操| 一本大道久久a久久综合| 久久精品国产一区二区| 亚洲一区成人在线| 综合在线观看色| 欧美国产一区视频在线观看| 日韩三级电影网址| 欧美人动与zoxxxx乱| 粉嫩嫩av羞羞动漫久久久| 国产在线精品不卡| 亚欧色一区w666天堂| 亚洲欧美韩国综合色| 中文幕一区二区三区久久蜜桃|