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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NGINX限流的一些思考

發(fā)布時(shí)間:2024/9/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NGINX限流的一些思考 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

來源:http://blog.csdn.net/soar_away/article/details/51980247

我們經(jīng)常遇到這種情況, 服務(wù)器資源有限,但是客戶端來的請求在不斷的上漲, 為了保證一部分的請求能夠正常相應(yīng), 不得不放棄一些客戶端來的請求, 這個(gè)時(shí)候我們會選擇行的進(jìn)行一些NGINX的限流操作, 這種操作可以很大程度上緩解服務(wù)器的壓力, 使其他正常的請求能夠得到正常響應(yīng).

? ? nginx 限流的策略有多種, 下面我們來聊聊常見的集中限流策略.

? ? 1. ?針對固定IP進(jìn)行限流, 這種策略主要用于同一個(gè)IP反復(fù)請求服務(wù)器,類似于洪水攻擊或者DDos攻擊,對單一ID進(jìn)行限制可以有效的

? ? ? ?對單一IP的限制的配置

[php]?view plaincopy
  • vim?nginx.conf???
  • 在http域內(nèi)添加??????
  • limit_zone?one??$binary_remote_addr??30m;????
  • limit_req_zone??$binary_remote_addr??zone=req_one:30m?rate=10r/s;??
  • limit_zone 是對于每個(gè) IP 分配session空間, 總共空間大小為30M ?one 定義了一個(gè)名稱, ? $bin_remote_add 即為一個(gè)IP地址

    limit_req_zone 是對請求頻率進(jìn)行限制, ?10 req/second的IP允許訪問

    ? ??

    ? ? ?2. ?針對IP限制并發(fā)請求

    [php]?view plaincopy
  • limit_conn?perip?8;????????
  • limit_req?zone=perreq?nodelay;??
  • ? ? ? ?這是設(shè)置IP并發(fā) 最多8個(gè)并發(fā)請求 同一個(gè)IP


    ? ? ?3. 配置白名單

    ? ? ?白名單的作用就是 對某些特定的IP不做請求限制,比如我們自己的IP,或者公司內(nèi)網(wǎng)的IP等.

    [php]?view plaincopy
  • geo?$whiteiplist??{??
  • ?????default?1;?????????????----??key=default,??value=1??
  • ?????include?conf/whiteip.conf;??
  • }??
  • ??
  • map?$whiteiplist??$limit?{??
  • ?????1?$binary_remote_addr;???---?value=1?則返回$binary_remote_addr?也就是IP?否則返回空字符串??
  • ?????0?"";??
  • }??
  • 白名單放在 conf/whiteip.conf 文件里面.whitip.conf 的格式key value的格式, 就是特定的IP可以映射到空的字符串, 這樣就不會對它進(jìn)行限制操作了


    配置白名單的 方法在官網(wǎng)有詳細(xì)說明, 可以看這里.

    GEO 用法? ??MAP用法

    ? ?

    ? ? ? ?4. 負(fù)載均衡可能也算一種吧 , 當(dāng)然他是把自己的流量倒到別的機(jī)子上去而已

    nginx 的負(fù)載均衡 配置的字段是upstream

    [php]?view plaincopy
  • upstream?lvs?{???
  • ????????server?localhost:8088?;???
  • ????????server?192.168.1.123:8080?down;???
  • ????????server?abc.tmc?weight=2;???
  • ????????server?server:9000?backup;???
  • }???
  • [php]?view plaincopy
  • 然后在server?里面做一個(gè)代理,?執(zhí)行l(wèi)vs??
  • [php]?view plaincopy
  • server?{???
  • ????????listen?80;???
  • ????????location?/?{???
  • ????????????????proxy_pass?http://lvs;???
  • ????????}???
  • ????????server_name?my_proxy;???
  • }???

  • ? ?稍微解釋一下 upstream 的配置,

    1. down 表示這臺服務(wù)器不參與負(fù)載均衡

    2. weight 默認(rèn)為1 , weight 值越大, 分配的請求也越多?

    3. max_fails 允許請求的最多失敗數(shù)目, ? ?超過最大次數(shù)是, 返回proxy_next_upstream 模塊定義的錯(cuò)誤

    4. fail_timeout : 標(biāo)示失敗多少次以后 就不響應(yīng)了

    5. back_up: ?備用機(jī) , 如果 其他機(jī)子忙或者掛了可以訪問backup機(jī)子


    總結(jié)

    以上是生活随笔為你收集整理的NGINX限流的一些思考的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。