日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx限速详解

發布時間:2023/12/18 Nginx 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx限速详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

限速相關的模塊以及使用

  • 記錄下nginx 限速相關的模塊以及使用
    • ngx_http_limit_req_module
    • ngx_http_limit_conn_module
    • ngx_http_core_module
    • 白名單使用

記錄下nginx 限速相關的模塊以及使用

nginx 一共有3個限速相關模塊,分別是
1:ngx_http_limit_req_module
2:ngx_http_limit_conn_module
3:Module ngx_http_core_module

3個模塊都默認編譯到nginx 核心模塊里,自定義編譯nginx 需要查看是否有編譯

ngx_http_limit_req_module

一句話:限制請求的速率

詳細解析:ngx_http_limit_req_module模塊(0.7.21)用于限制每一個定義的 key 的請求的處理速率,特別是從一個單一的IP地址的請求的處理速率。使用“泄漏桶”方法可以完成此限制。

句法: limit_req zone=name [burst=number] [nodelay | delay=number];
默認: 不限制
語境: http,server,location

示例

http {#這個必須在http里定義,定義一個以 binary_remote_addr 為key 名字為perip_req 的內存空間 漏斗速度每秒30個請求,速度需要整數,要2s/r 則用30r/mlimit_req_zone $binary_remote_addr zone=perip_req:10m rate=30r/s;#這里可以定義一個以服務器為key 的總速度 limit_req_zone $server_name zone=perserver_req:10m rate=1000r/s; ...server {...#僅對php鏈接進行限制location ~ \.php$ {#同一ip限制速度10個每秒 緩沖池為10,這個burst 是對應ip的,nodelay 是指及時處理緩沖池的鏈接,沒有緩沖池會按規定速度處理limit_req zone=perip_req burst=500 nodelay;limit_req zone=perserver_req burst=5000 nodelay;}} }

官網鏈接:ngx_http_limit_req_module詳細說明

ngx_http_limit_conn_module

一句話:限制請求的并發,有點這個沒有上面的靈活,不能設置緩沖池

詳細解析:ngx_http_limit_conn_module模塊用于限制每個定義的鍵的連接數,特別是來自單個IP地址的連接數。
并非所有連接都被計數。僅當連接具有服務器正在處理的請求并且已經讀取了整個請求標頭時,才對連接進行計數。

句法: limit_conn zone number;
默認: 不限制
語境: http,server,location

示例

http { #這里注意不要跟其他限速模塊定義重名limit_conn_zone $binary_remote_addr zone=perip_con:10m;limit_conn_zone $server_name zone=perserver_con:10m;...serve {...location / download / {limit_conn perip_con 1; #限制客戶端相同ip并發為1limit_conn perserver_con 100; #限制服務器總并發為100}} }

官網鏈接:ngx_http_limit_conn_module詳細說明

ngx_http_core_module

一句話:限制請求的帶寬,一般用于文件下載限制

示例

http {limit_conn_zone $binary_remote_address zone=perip:10m...server {...location /download/ {# 限制每個IP只能建立一個連接limit_conn perip 1;# 當請求的流量超500KB后進行限速limit_rate_after 500k;# 限速 50KB/slimit_rate 50k;}} }

官網鏈接:ngx_http_core_module詳細說明

白名單使用

http {geo $whiteiplist {default 1;127.0.0.1 0;10.0.0.0/8 0;121.207.242.0/24 0;}map $whiteiplist $limit {1 $binary_remote_addr;0 "";}limit_conn_zone $limit zone=limit:10m;server {listen 8080;server_name test.ttlsa.com;location ^~ /ttlsa.com/ {limit_conn limit 4;limit_rate 200k;alias /data/www.ttlsa.com/data/download/;}} }

解析:

  • geo指令定義一個白名單$whiteiplist, 默認值為1, 所有都受限制。 如果客戶端IP與白名單列出的IP相匹配,則$whiteiplist值為0也就是不受限制。
  • map指令是將$whiteiplist值為1的,也就是受限制的IP,映射為客戶端IP。將$whiteiplist值為0的,也就是白名單IP,映射為空的字符串。
  • limit_conn_zone和limit_req_zone指令對于鍵為空值的將會被忽略,從而實現對于列出來的IP不做限制。
  • 參考:https://blog.csdn.net/weixin_34101784/article/details/92620011

    總結

    以上是生活随笔為你收集整理的Nginx限速详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。