LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Nginx如何設置限制每個連接的訪問速度?

admin
2025年8月21日 17:58 本文熱度 115

在 Nginx 中限制每個連接(即每個客戶端)的訪問速度,主要使用的是 limit_rate 和 limit_rate_after 這兩個指令。

這是一個非常實用的功能,常用于提供大文件(如視頻、ISO鏡像)下載的服務,以確保單個客戶端不會耗盡所有帶寬,保證服務器資源的公平使用。

核心指令

  1. limit_rate

    • limit_rate 100k; 表示將速率限制在每秒 100KB。

    • ?limit_rate 500k; 表示將速率限制在每秒 500KB。?

    • limit_rate 1m; 表示將速率限制在每秒 1MB。

    • 功能:用于限制單個連接的傳輸速率。

    • 單位:默認是字節每秒 (B/s)。但通常我們用千字節 (k) 或兆字節 (m) 來表示更方便。

    • 示例

  2. limit_rate_after (可選,但推薦使用)

    • limit_rate_after 10m; 表示在傳輸了 10MB 數據后開始限速。

    • limit_rate_after 100k; 表示在傳輸了 100KB 數據后開始限速。

    • 功能:指定在傳輸了多少數據之后才開始限速。在達到這個閾值之前,傳輸速度是不受限制的。

    • 為什么需要它:這對于提升用戶體驗非常有用。例如,允許用戶快速加載頁面的前幾兆內容(如網頁本身、小圖片),或者允許視頻/音頻播放器快速緩沖開頭的部分,以保證流暢播放,然后再對后續的下載進行限速。

    • 單位:同樣支持 k (千字節) 和 m (兆字節)。

    • 示例

配置方法

這些指令可以放在 Nginx 配置文件的多個上下文中,作用范圍不同。

  1. 在 server 塊中設置(對整個虛擬主機生效)

server {

    listen 80;

    server_name example.com;


    # 在傳輸了 5MB 數據后,將速度限制為每秒 200KB

    limit_rate_after 5m;

    limit_rate 200k;


    ... # 其他配置

}

  1. 在 location 塊中設置(對特定請求生效)

這是更常見的用法,可以只對下載大文件的路徑進行限速。

server {

    listen 80;

    server_name example.com;


    # 正常網站內容,不限速

    location / {

        root /usr/share/nginx/html;

    }


    # 對下載目錄 /download/ 下的所有文件進行限速

    location /download/ {

        alias /data/downloads/;


        # 前10MB不限速,之后限速為每秒 500KB

        limit_rate_after 10m;

        limit_rate 500k;

    }


    # 針對特定的文件類型,例如 .iso 文件進行更嚴格的限速

    location ~* \.(iso|img)$ {

        # 前 20MB 快速下載,之后限速為每秒 100KB

        limit_rate_after 20m;

        limit_rate 100k;

    }

}

  1. 通過 $limit_rate 變量進行動態控制(高級用法)

limit_rate 指令實際上設置的是 $limit_rate 變量的值。這個變量可以在運行時被修改,從而實現動態限速。

示例:根據請求參數中的 speed 值來動態限速

# 在http塊中定義一個map,將參數映射為速率值

map $arg_speed $limit_rate_val {

    default   100k;    # 默認100KB/s

    high      500k;    # ...?speed=high 則500KB/s

    low       50k;     # ...?speed=low  則50KB/s

    unlimited off;     # ...?speed=unlimited 則不限速(‘off’ 表示取消限制)

}


server {

    listen 80;

    server_name example.com;


    location /download/ {

        alias /data/downloads/;

        limit_rate_after 10m;

        limit_rate $limit_rate_val; # 使用map定義的變量值

    }

}

這樣,用戶訪問 https://example.com/download/file.iso?speed=high 就可以獲得更快的下載速度。

    • 根據條件限速:例如,通過 map 或 if 判斷某些條件(如特定IP、請求參數等)來設置不同的速率。

    • 通過代理設置限速:在反向代理場景中,可以在 location 塊中設置。

重要注意事項

  • 作用單位limit_rate 限制的是每個 Nginx 工作進程每個客戶端之間的單個連接的速率。如果一個客戶端打開了多個連接(例如,用下載工具多線程下載),那么它的總速度是 limit_rate * 連接數

  • 全局限速:如果要嚴格地“每個IP地址”或“每個用戶”進行全局限速,需要使用 limit_conn_zone 和 limit_conn 來限制并發連接數,再配合 limit_rate 才能達到更好效果。limit_rate 本身不限制連接數。

  • 生效時機limit_rate 指令在向客戶端發送響應時生效。對于已經建立連接的 keep-alive 請求,指令會在新請求到來時應用。

  • 測試:配置完成后,記得使用 nginx -t 測試配置語法是否正確,然后使用 nginx -s reload 重載配置。測試限速效果可以使用 wgetcurl 或瀏覽器下載文件進行觀察。

總結

指令?作用示例說明
limit_rate限制單個連接的傳輸速率limit_rate 200k;速度限制為 200KB/s
limit_rate_after定義在傳輸多少數據后開始限速limit_rate_after 10m;前 10MB 不限速,之后開始限速

最簡單的配置就是在你的 server 或 location 塊中加入:

limit_rate_after 5m;

limit_rate 100k;


該文章在 2025/8/22 14:18:34 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
鸭子tv国产在线永久播放 | 久久人人爽爽人人爽爽aⅤ 亚洲图片在线视频 | 日韩精品动漫在线观看一区 | 亚洲日本一区二区 | 伊人久久大香线蕉亚洲 | 精品v大片在线观看 |