Nginx 限速配置

2021-07-28 05:09:33 字數 1300 閱讀 5228

nginx 是個不錯的web伺服器,提供了全方位的限速功能,主要的功能模組是ngx_http_core_module、ngx_http_limit_conn_module和 ngx_http_limit_req_module,第乙個模組中有limit_rate功能(限網速頻寬),後兩個模組從字面上講,功能分別是限制連線(limit connection)和限制請求(limit request),這幾個模組預設都編譯進了nginx核心。

所有的限制都是針對ip的,因此對cc、ddos有一定的防禦作用。

限頻寬很容易明白,直接上例子

location /***

有一種方式可以讓限速更加人性化,即傳輸一定流量後開始限速,

比如先全速傳輸1m,然後開始限速:

location /photo

接下來講限併發數和請求數。

為什麼有這兩個模組呢?因為我們知道,乙個頁面通常有多個子模組,譬如5張,那麼我們請求這個頁面時發起了乙個連線,但是這乙個連線包含了5次請求,也就是說,乙個連線可以發起多次請求。我們為了維持使用者體驗,是限制連線數還是請求數,要根據實際需要進行選擇。

1、限制連線數

要限制連線,必須先有乙個容器對連線進行計數,在http段加入如下**:

limit_conn_zone $binary_remote_addr zone=addr:5m;

這樣就在記憶體中建立了乙個5m大小,名為addr的限速池(每個連線占用32或64位元組,5m大小可容納數以萬計的連線,通常是足夠的,如果5m記憶體耗盡,將返回503)

接下來需要對server不同的位置(location段)進行限速,比如限制每個ip併發連線數為2,則

limit_conn addr 2;

2、限制請求數

要限制請求數,也必須先建立乙個限速池,在http段加入如下**:

limit_req_zone $binary_remote_addr zone=one:5m;

限速分為全域性限速和區域性限速,

對於全域性限速,我們只需要在後面加上引數即可,比如每秒20個請求,rate=20r/s,即:

limit_req_zone $binary_remote_addr zone=perip:5m rate=20r/s;

有時候我們希望在location段調整一下鏈結,可以借助burst引數

limit_req zone=one burst=50;

如果不希望延時,還有nodelay引數

limit_req zone=one burst=50 nodelay;

以上是nginx的限速功能簡介,不當之處,歡迎指正。至於具體使用哪種限速方法,一定要斟酌,以免破壞使用者體驗。

cisco3550 埠限速配置

一 網路說明 pc1接在cisco3550 f0 1上,速率為1m pc1接在cisco3550 f0 2上,速率為2m cisco3550的g0 1為出口。二 詳細配置過程 1 在交換機上啟動qos switch config mls qos 在交換機上啟動qos 2 分別定義pc1 10.10....

nginx限速控制

nginx有兩種限速控制,一種是控制請求或連線數,一種是通過傳送位元組控制速度 1.通過傳送位元組控制速度,限制頻寬 nginx 提供了limit rate 和 limit rate after 詳情查詢nginx配置介紹 location download 限流的核心 針對於限流的url,返回的時...

nginx在ubuntu下的快速配置

nginx依賴的三大lib的配置 sudo apt get install openssl libssl dev sudo apt get install libpcre3 libpcre3 dev sudo apt get install zlib1g dev auto configure pre...