您好,登錄后才能下訂單哦!
這篇文章主要介紹“nginx怎么使用內置模塊配置限速限流”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“nginx怎么使用內置模塊配置限速限流”文章能幫助大家解決問題。
有時候 NGINX 面對一些特殊的場景時,需要進行一定的限速限流的配置,比如一個官網,可能前端靜態文件是非常小的,但是同時配置的還有一些 apk 包,這些包如果不做任何限制,可能會形成比較大的負載或者帶寬的壓力,我這邊碰到了,今天就來針對這個問題處理一下。
沒有限制之前,對應的包下載速度如下:
添加如下配置,進行一定的限制:
http { ...#省略 limit_conn_zone $binary_remote_addr zone=addr:10m; ...#省略 } server { listen 80 default; server_name localhost; location ~ "^/test/app/" { limit_conn addr 6; limit_rate_after 10m; limit_rate 1200k; limit_conn_status 499; limit_conn_log_level warn; root /app; } }
說明:
http 區域,我這里使用的是 1.15 版本的,默認已經安裝了對應的模塊ngx_http_limit_conn_module。
limit_conn_zone:是一個固定的名稱,下邊調用的時候與之對應。 $binary_remote_addr:表示通過
remote_addr 這個標識來做限制,“binary_” 的目的是縮寫內存占用量,是限制同一客戶端 ip 地址。
zone=addr:10m:示生成一個大小為 10M,名字為 addr 的內存區域,用來存儲訪問的頻次信息。
server 區域,可以直接寫在 server 區域內,表示限制所有,也可以寫到對應的 location 當中,以表示單獨區域限制。
limit_conn:表示單個 IP 限制最大連接數為 6。 limit_rate_after:表示請求前 10m 大小時不限速。
limit_rate:表示單個連接最大連接帶寬限制為 1200k。 limit_conn_status:設置拒絕請求的返回值。值只能設置400 到 599 之間(默認是 503)。 limit_conn_log_level:定義日志級別,默認 error。
現在簡單的做一下測試看看下載速度:
可以看到對應的速度已經收到限制,而且是在 10M 之后速度開始慢慢下降,直至達到限制的位置。現在可以簡單壓測看下情況:
$ ab -n 10 -c 10 http://www.test.com/res/app/app-xiaomi-release.apk
這條命令表示請求 10 次對應資源,并發為 10。監控對應日志,看到如下結果,因為我們定義的最大并發是 6,所以將會有 4 個失敗,并返回 499 狀態碼,然后有 6 個成功。
$tailf -n 100 a |awk -F "," '{print $6}' "response": "499" "response": "499" "response": "499" "response": "499" "response": "200" "response": "200" "response": "200" "response": "200" "response": "200" "response": "200"
另外在壓測命令之后,還有一些輸出可以參考:
Total transferred: 403483116 bytes HTML transferred: 403481400 bytes Requests per second: 0.18 [#/sec] (mean) Time per request: 56865.501 [ms] (mean) Time per request: 5686.550 [ms] (mean, across all concurrent requests) Transfer rate: 6929.10 [Kbytes/sec] received
其他的不說了,只看最后一條,可以看到總的對外輸出是大約7M/s,正好符合單條限制 1.2M/s 乘以 6 的數值。
關于“nginx怎么使用內置模塊配置限速限流”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。