這篇文章主要介紹“Nginx速率限流怎么配置”,在日常操作中,相信很多人在Nginx速率限流怎么配置問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Nginx速率限流怎么配置”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
目前創(chuàng)新互聯(lián)公司已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、鳳泉網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
1 簡介
Nginx作為微服務(wù)架構(gòu)的流量接入層,主要使用 ngx_http_limit_req_module 模塊實現(xiàn)漏桶算法的請求速率的限制。主要流程如下:
Nginx-速率限流主要流程
Nginx-速率限流主要流程
Nginx速率限流的主要流程如下:
① 客戶端向Nginx發(fā)起請求
② Nginx近burst配置校驗
③ burst未配置,則直接進行速率(rate)校驗
④ 速率校驗超額,則返回指定錯誤碼給客戶端
⑤ 速率校驗未超額,則將請求轉(zhuǎn)發(fā)至后端服務(wù)器
⑥ burst配置了且大于0,則進行burst校驗
⑦ burst ⑧ burst>max,則校驗延遲模式(nodelay)是否配置 ⑨ 延遲模式已配置,則進入隊列進行等待被處理 ⑩ 若未配置延遲模式,則直接返回503錯誤碼給客戶端 2 核心配置 2.1 limit_req limit_req 主要用于配置限流區(qū)域、突發(fā)容量(默認為0)和是否延遲模式(默認為延遲模式)。 使用語法 配置段 2.2 limit_req_zone limit_req_zone 主要用于配置限流key、存放key對應(yīng)信息的共享內(nèi)存區(qū)域大小和固定請求速率。該功能只有Nginx version≥1.7.6的版本才被支持。 使用語法 配置段 2.3 limit_conn_log_level limit_conn_log_level 主要用于配置被限流后的日志級別,默認為error級別。該功能只有Nginx version≥0.8.18的版本才被支持。 使用語法 配置段 默認值 2.4 limit_conn_status limit_conn_status 主要用于配置被限流后的返回的狀態(tài),默認會返回503狀態(tài)碼。該功能只有Nginx version≥1.3.15的版本才被支持。 使用語法 配置段 默認值 3 注意事項 凡事都具有兩面性,ngx_http_limit_req_module 模塊雖可以解決當(dāng)前面臨的并發(fā)問題,但也會引入另外一些問題。如前端如果有做LVS或反向代理,而后端啟用了該模塊功能,那該機器的IP訪問會特別頻繁,從而導(dǎo)致經(jīng)常出現(xiàn)503錯誤,但可以通過設(shè)置IP白名單來進行過濾解決該問題,簡單配置方式如: 4 配置案例 到此,關(guān)于“Nginx速率限流怎么配置”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
limit_req zone=[name] [burst=number] [nodelay];
http,server,location
limit_req_zone [key] zone=[name]:[size] rate=[rate];
http
limit_conn_log_level info|notice|warn|error;
http,server,location
limit_conn_log_level error;
limit_conn_zone $variable zone=name:size;
http
limit_conn_status 503;
location / { # 允許一個IP的訪問 allow 10.1.1.16; }
# 根據(jù)客戶端IP地址進行統(tǒng)計,設(shè)置共享內(nèi)存大小為20MB,設(shè)置固定速率大小為10r/s limit_req_zone $binary_remote_addr zone=addr:20m rate=10r/s; # 設(shè)置并發(fā)限流的日志級別為error limit_conn_log_level error; # 設(shè)置觸發(fā)并發(fā)限制時直接返回503狀態(tài)碼 limit_conn_status 503; # ... server{ # ... location /limit{ # 設(shè)置每個IP的桶容量為10 # nodelay表示超額則立即返回503錯誤 # 沒有配置nodelay表示超過后請求就會排隊等待 limit_req zone=addr burst=10 nodelay; } } }
標(biāo)題名稱:Nginx速率限流怎么配置
文章URL:http://weahome.cn/article/pedjho.html