用Nginx建站的同學,常會有限速需求。開發測試階段在本地限速模擬公網的環境,方便調試。投入運營會有限制附件下限速度,限制每個用戶的訪問速度,限制每個IP的鏈接速度等需求。
剛遇到一個Bug在網絡很卡的情況下才能重現,本地調試訪問本機速度太快,配置Nginx成功達到限速目的,在此分享出來。
配置簡單,只需3行,打開"nginx根目錄/conf/nginx.conf"配置文件修改如下:
- http{
- ……
- limit_zone one $binary_remote_addr 10m;
- ……
- server {
- location / {
- ……
- limit_conn one 2;
- limit_rate 40k;
- }
- }
- }
以上配置解釋:limit_zone針對每個IP定義一個存儲session狀態的容器。這個示例中定義了一個名叫one的10m大小的容器,這個名字會在后面的limit_conn中使用。limit_conn指定每個訪客只能建立兩條鏈接,limit_rate限制每條鏈接的速度不超過40K。所以,以上配置限制用戶訪問此站點總速度上限為80K。
屬性說明limit_zone
語法:
作用域:http
limit_conn
語法:
作用域:http, server, location
limit_rate
語法:
作用域:http, server, location
案例案例1:下載資源放在http://domain/download/路徑下,針對每個訪客下載限速為100K,且只能同時鏈接1個下載鏈接。
- http{
- server {
- location /download/ {
- ……
- limit_conn one 1;
- limit_rate 100k;
- }
- }
- }
案例2:每個訪客訪問站點的速度最大不超過100K,且可建立5條鏈接。
- http{
- server {
- location /download/ {
- ……
- limit_conn one 5;
- limit_rate 20k;
- }
- }
- }
由于linit_rate是對每個鏈接限速,以上例子有5條鏈接,保證總速度不超過100K則每條鏈接不超過20K