nginx限流配置

ngx_http_limit_req_module

ngx_http_limit_req_module模塊(0.7.21)可以通過(guò)定義的 鍵值來(lái)限制請(qǐng)求處理的頻率爹殊。特別的酱酬,它可以限制來(lái)自單個(gè)IP地址的請(qǐng)求處理頻率。 限制的方法是通過(guò)一種“漏桶”的方法——固定每秒處理的請(qǐng)求數(shù),推遲過(guò)多的請(qǐng)求處理。


配置示例

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    ...
    server {
        ...
        location /search/ {
            limit_req zone=one burst=5;
        }

指令

語(yǔ)法: limit_req zone=name [burst=number] [nodelay];
默認(rèn)值: —
上下文: http, server, location

解釋

設(shè)置對(duì)應(yīng)的共享內(nèi)存限制域和允許被處理的最大請(qǐng)求數(shù)閾值失驶。 如果請(qǐng)求的頻率超過(guò)了限制域配置的值,請(qǐng)求處理會(huì)被延遲枣购,所以 所有的請(qǐng)求都是以定義的頻率被處理的嬉探。 超過(guò)頻率限制的請(qǐng)求會(huì)被延遲,直到被延遲的請(qǐng)求數(shù)超過(guò)了定義的閾值 這時(shí)棉圈,這個(gè)請(qǐng)求會(huì)被終止涩堤,并返回503 (Service Temporarily Unavailable) 錯(cuò)誤。這個(gè)閾值的默認(rèn)值等于0分瘾。 比如這些指令

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
    location /search/ {
        limit_req zone=one burst=5;
    }
  • 限制平均每秒不超過(guò)一個(gè)請(qǐng)求胎围,同時(shí)允許超過(guò)頻率限制的請(qǐng)求數(shù)不多于5個(gè)。
    如果不希望超過(guò)的請(qǐng)求被延遲德召,可以用nodelay參數(shù):
limit_req zone=one burst=5 nodelay;

語(yǔ)法: limit_req_log_level info | notice | warn | error;
默認(rèn)值:
limit_req_log_level error;
上下文: http, server, location

  • 設(shè)置你所希望的日志級(jí)別白魂,當(dāng)服務(wù)器因?yàn)轭l率過(guò)高拒絕或者延遲處理請(qǐng)求時(shí)可以記下相應(yīng)級(jí)別的日志。 延遲記錄的日志級(jí)別比拒絕的低一個(gè)級(jí)別上岗;比如福荸, 如果設(shè)置“l(fā)imit_req_log_level notice”, 延遲的日志就是info級(jí)別肴掷。

語(yǔ)法: limit_req_zone $variable zone=name:size rate=rate;
默認(rèn)值: —
上下文: http

  • 設(shè)置一塊共享內(nèi)存限制域的參數(shù)敬锐,它可以用來(lái)保存鍵值的狀態(tài)。 它特別保存了當(dāng)前超出請(qǐng)求的數(shù)量呆瞻。 鍵的值就是指定的變量(空值不會(huì)被計(jì)算)台夺。 示例用法:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
  • 這里,狀態(tài)被存在名為“one”痴脾,最大10M字節(jié)的共享內(nèi)存里面颤介。對(duì)于這個(gè)限制域來(lái)說(shuō) 平均處理的請(qǐng)求頻率不能超過(guò)每秒一次。
  • 鍵值是客戶端的IP地址明郭。 如果不使用remote_addr變量买窟,而用binary_remote_addr變量丰泊, 可以將每條狀態(tài)記錄的大小減少到64個(gè)字節(jié)薯定,這樣1M的內(nèi)存可以保存大約1萬(wàn)6千個(gè)64字節(jié)的記錄。 如果限制域的存儲(chǔ)空間耗盡了瞳购,對(duì)于后續(xù)所有請(qǐng)求话侄,服務(wù)器都會(huì)返回 503 (Service Temporarily Unavailable)錯(cuò)誤肉渴。
  • 請(qǐng)求頻率可以設(shè)置為每秒幾次(r/s)。如果請(qǐng)求的頻率不到每秒一次财岔, 你可以設(shè)置每分鐘幾次(r/m)呐籽。比如每秒半次就是30r/m。

示例


user  root;
worker_processes  4;

#配置Nginx worker進(jìn)程最大打開(kāi)文件數(shù)
worker_rlimit_nofile 65535;
events {
    #最大連接數(shù)
    worker_connections  65535;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    proxy_buffering on;
    proxy_buffer_size 1024k;
    proxy_buffers 16 512k;
    proxy_busy_buffers_size 1024k;
    proxy_temp_file_write_size 1024k;
    client_max_body_size 20m;
    server_names_hash_bucket_size 128;

    #限流主配置 一秒只允許同一個(gè)客戶端訪問(wèn)兩次
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
    
    server {
        listen       80;
        server_name  abc.hhh.com;

        #設(shè)置限流限制訪問(wèn)時(shí),返回的狀態(tài)碼
        limit_req_status 429;
        
        location /aaa {
            proxy_pass http://adminserver;
            #設(shè)置限流
            limit_req zone=mylimit burst=5 nodelay;
            proxy_connect_timeout 60s;
            proxy_read_timeout 120s;
            proxy_send_timeout 12s;
            proxy_set_header Connection "";
            proxy_http_version 1.1;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末变丧,一起剝皮案震驚了整個(gè)濱河市芽狗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痒蓬,老刑警劉巖童擎,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異攻晒,居然都是意外死亡顾复,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門鲁捏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芯砸,“玉大人,你說(shuō)我怎么就攤上這事给梅〖偕ィ” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵破喻,是天一觀的道長(zhǎng)虎谢。 經(jīng)常有香客問(wèn)我,道長(zhǎng)曹质,這世上最難降的妖魔是什么婴噩? 我笑而不...
    開(kāi)封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮羽德,結(jié)果婚禮上几莽,老公的妹妹穿的比我還像新娘。我一直安慰自己宅静,他們只是感情好章蚣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著姨夹,像睡著了一般纤垂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磷账,一...
    開(kāi)封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天峭沦,我揣著相機(jī)與錄音,去河邊找鬼逃糟。 笑死吼鱼,一個(gè)胖子當(dāng)著我的面吹牛蓬豁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菇肃,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼地粪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了琐谤?” 一聲冷哼從身側(cè)響起蟆技,我...
    開(kāi)封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斗忌,沒(méi)想到半個(gè)月后付魔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡飞蹂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年几苍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陈哑。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妻坝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惊窖,到底是詐尸還是另有隱情刽宪,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布界酒,位于F島的核電站圣拄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏毁欣。R本人自食惡果不足惜庇谆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凭疮。 院中可真熱鬧饭耳,春花似錦、人聲如沸执解。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)衰腌。三九已至新蟆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間右蕊,已是汗流浹背琼稻。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尤泽,地道東北人欣簇。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像坯约,于是被迫代替她去往敵國(guó)和親熊咽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 本篇文章來(lái)講下Nginx限流的一些知識(shí)闹丐,因?yàn)樵谝恍I(yè)務(wù)場(chǎng)景中可能會(huì)使用得到横殴,比如:搶購(gòu)的場(chǎng)景(如果短時(shí)間內(nèi)大量的請(qǐng)...
    十年磨一劍1111閱讀 997評(píng)論 0 1
  • 1、限流算法 令牌桶算法 算法思想是:a卿拴、令牌以固定速率產(chǎn)生衫仑,并緩存到令牌桶中;b堕花、令牌桶放滿時(shí)文狱,多余的令牌被丟棄...
    yellow_han閱讀 2,865評(píng)論 1 24
  • 限流算法: 1. 令牌桶算法 算法思想是: 令牌以固定速率產(chǎn)生,并緩存到令牌桶中缘挽;令牌桶放滿時(shí)瞄崇,多余的令牌被丟棄;...
    touch_The_Sky閱讀 845評(píng)論 0 2
  • 1. 摘要 本文介紹Nginx限流算法及限流配置實(shí)踐及測(cè)試驗(yàn)證壕曼。 2. 限流算法 高并發(fā)系統(tǒng)有三把利器:緩存苏研、降級(jí)...
    前浪浪奔浪流閱讀 1,320評(píng)論 0 1
  • 本文是對(duì)Rate Limiting with NGINX and NGINX Plus的主要內(nèi)容(去掉了關(guān)于NGI...
    zlup閱讀 11,546評(píng)論 0 15