亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解nginx的請求限制(連接限制和請求限制)

 更新時間:2018年07月12日 13:46:16   作者:浮生夢  
這篇文章主要介紹了詳解nginx的請求限制(連接限制和請求限制),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一,背景

    我們經(jīng)常會遇到這種情況,服務器流量異常,負載過大等等。對于大流量惡意的攻擊訪問,會帶來帶寬的浪費,服務器壓力,影響業(yè)務,往往考慮對同一個ip的連接數(shù),并發(fā)數(shù)進行限制。http_limit_conn_module 模塊來實現(xiàn)。該模塊可以根據(jù)定義的鍵來限制每個鍵值的連接數(shù),如同一個IP來源的連接數(shù)。并不是所有的連接都會被該模塊計數(shù),只有那些正在被處理的請求(這些請求的頭信息已被完全讀入)所在的連接才會被計數(shù)。http_limit_req_module 模塊來實現(xiàn),該模塊可以通過定義的 鍵值來限制請求處理的頻率。特別的,可以限制來自單個IP地址的請求處理頻率。 限制的方法如同漏斗,每秒固定處理請求數(shù),推遲過多請求。

二,配置語法

1,http_limit_conn_module指令解釋

limit_conn_zone
語法: limit_conn_zone $variable zone=name:size;
默認值: none
配置段: http

該指令描述會話狀態(tài)存儲區(qū)域。鍵的狀態(tài)中保存了當前連接數(shù),鍵的值可以是特定變量的任何非空值(空值將不會被考慮)。$variable定義鍵,zone=name定義區(qū)域名稱,后面的limit_conn指令會用到的。size定義各個鍵共享內(nèi)存空間大小。如:

limit_conn_zone $binary_remote_addr zone=addr:10m;

注釋:客戶端的IP地址作為鍵。注意,這里使用的是$binary_remote_addr變量,而不是$remote_addr變量。

$remote_addr變量的長度為7字節(jié)到15字節(jié),而存儲狀態(tài)在32位平臺中占用32字節(jié)或64字節(jié),在64位平臺中占用64字節(jié)。

$binary_remote_addr變量的長度是固定的4字節(jié),存儲狀態(tài)在32位平臺中占用32字節(jié)或64字節(jié),在64位平臺中占用64字節(jié)。

1M共享空間可以保存3.2萬個32位的狀態(tài),1.6萬個64位的狀態(tài)。

如果共享內(nèi)存空間被耗盡,服務器將會對后續(xù)所有的請求返回 503 (Service Temporarily Unavailable) 錯誤。

limit_zone 指令和limit_conn_zone指令同等意思,已經(jīng)被棄用,就不再做說明了。

limit_conn_log_level
語法:limit_conn_log_level info | notice | warn | error
默認值:error

配置段:http, server, location

當達到最大限制連接數(shù)后,記錄日志的等級。

limit_conn
語法:limit_conn zone_name number
默認值:none
配置段:http, server, location

指定每個給定鍵值的最大同時連接數(shù),當超過這個數(shù)字時被返回503 (Service Temporarily Unavailable)錯誤。如:

limit_conn_zone $binary_remote_addrzone=addr:10m;
server{
 location /www.baidu.com/{
  limit_conn addr 1;
 }
}

同一IP同一時間只允許有一個連接。

當多個 limit_conn 指令被配置時,所有的連接數(shù)限制都會生效。比如,下面配置不僅會限制單一IP來源的連接數(shù),同時也會限制單一虛擬服務器的總連接數(shù):

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
 limit_conn perip 10;
 limit_conn perserver 100;
}

[warning]limit_conn指令可以從上級繼承下來。[/warning]

limit_conn_status
語法: limit_conn_status code;
默認值: limit_conn_status 503;
配置段: http, server, location

該指定在1.3.15版本引入的。指定當超過限制時,返回的狀態(tài)碼。默認是503。

limit_rate
語法:limit_rate rate
默認值:0
配置段:http, server, location, if in location

對每個連接的速率限制。參數(shù)rate的單位是字節(jié)/秒,設置為0將關閉限速。 按連接限速而不是按IP限制,因此如果某個客戶端同時開啟了兩個連接,那么客戶端的整體速率是這條指令設置值的2倍。

完整實例配置

http{
 limit_conn_zone$binary_remote_addrzone=limit:10m;
 limit_conn_log_level info;
 server{
  location ^~/download/{ 
  limit_conn limit 4;
  limit_rate 200k;
  /data/www.baidu.com/download/;
  }
 }
}

使用注意事項

事務都具有兩面性的。http_limit_conn_module 模塊雖說可以解決當前面臨的并發(fā)問題,但是會引入另外一些問題的。如前端如果有做LVS或反代,而我們后端啟用了該模塊功能,那不是非常多503錯誤了?這樣的話,可以在前端啟用該模塊,要么就是設置白名單,白名單設置參見后續(xù)的文檔。

2,ngx_http_limit_req_module模塊指令

limit_req_zone
語法: limit_req_zone $variable zone=name:size rate=rate;
默認值: none
配置段: http

設置一塊共享內(nèi)存限制域用來保存鍵值的狀態(tài)參數(shù)。 特別是保存了當前超出請求的數(shù)量。 鍵的值就是指定的變量(空值不會被計算)。如

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

說明:區(qū)域名稱為one,大小為10m,平均處理的請求頻率不能超過每秒一次。
鍵值是客戶端IP。

使用$binary_remote_addr變量, 可以將每條狀態(tài)記錄的大小減少到64個字節(jié),這樣1M的內(nèi)存可以保存大約1萬6千個64字節(jié)的錄。

如果限制域的存儲空間耗盡了,對于后續(xù)所有請求,服務器都會返回 503 (Service Temporarily Unavailable)錯誤。
速度可以設置為每秒處理請求數(shù)和每分鐘處理請求數(shù),其值必須是整數(shù),所以如果你需要指定每秒處理少于1個的請求,2秒處理一個請求,可以使用 “30r/m”。

limit_req_log_level
語法: limit_req_log_level info | notice | warn | error;
默認值: limit_req_log_level error;
配置段: http, server, location

設置你所希望的日志級別,當服務器因為頻率過高拒絕或者延遲處理請求時可以記下相應級別的日志。 延遲記錄的日志級別比拒絕的低一個級別;比如, 如果設置“l(fā)imit_req_log_level notice”, 延遲的日志就是info級別。

limit_req_status
語法: limit_req_status code;
默認值: limit_req_status 503;
配置段: http, server, location

該指令在1.3.15版本引入。設置拒絕請求的響應狀態(tài)碼。

limit_req
語法: limit_req zone=name [burst=number] [nodelay];
默認值: —
配置段: http, server, location

設置對應的共享內(nèi)存限制域和允許被處理的最大請求數(shù)閾值。 如果請求的頻率超過了限制域配置的值,請求處理會被延遲,所以所有的請求都是以定義的頻率被處理的。 超過頻率限制的請求會被延遲,直到被延遲的請求數(shù)超過了定義的閾值,這時,這個請求會被終止,并返回503 (Service Temporarily Unavailable) 錯誤。這個閾值的默認值為0。如:

limit_req_zone $binary_remote_addr zone=creq:10 mrate=1r/s;
server{
 location /www.baidu.com/{
  limit_req zone=creq burst=5;
 }
}

限制平均每秒不超過一個請求,同時允許超過頻率限制的請求數(shù)不多于5個。

如果不希望超過的請求被延遲,可以用nodelay參數(shù),如:

limit_req zone=ttlsa_com burst=5 nodelay;

完整實例配置

http{
 limit_req_zone $binary_remote_addr zone=creq:10m rate=1r/s;
 server{
  location ^~/download/{ 
  limit_req zone=creq burst=5;
  data/www.baidu.com/download/;
  }
 }
}

可能要對某些IP不做限制,需要使用到白名單。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Linux上搭載Nginx負載均衡配置使用案例詳解

    Linux上搭載Nginx負載均衡配置使用案例詳解

    這篇文章主要介紹了Linux上搭載Nginx負載均衡配置使用案例詳解,針對此情況而衍生出來的一種廉價有效透明的方法以擴展現(xiàn)有網(wǎng)絡設備和服務器的帶寬、增加吞吐量、加強網(wǎng)絡數(shù)據(jù)處理能力、提高網(wǎng)絡的靈活性和可用性的技術就是負載均衡(Load?Balance),需要的朋友可以參考下
    2022-01-01
  • Nginx虛擬主機的配置實現(xiàn)

    Nginx虛擬主機的配置實現(xiàn)

    虛擬主機指的就是一個獨立的站點配置,是nginx默認支持的一個功能,本文主要介紹了Nginx虛擬主機的配置實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • nginx修改默認端口方法圖文詳解

    nginx修改默認端口方法圖文詳解

    我們都知道nginx 默認使用80端口,有時候我們希望nginx運行在其他端口,下面這篇文章主要給大家介紹了關于nginx修改默認端口的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Nginx服務安裝及軟件升級

    Nginx服務安裝及軟件升級

    這篇文章主要為大家介紹了Nginx服務的安裝以及軟件升級的步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • nginx實現(xiàn)靜態(tài)文件的token認證過程

    nginx實現(xiàn)靜態(tài)文件的token認證過程

    這篇文章主要介紹了nginx實現(xiàn)靜態(tài)文件的token認證過程,
    2024-06-06
  • 深入淺析nginx部署及簡單優(yōu)化

    深入淺析nginx部署及簡單優(yōu)化

    Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發(fā)的。本文重點給大家介紹nginx部署及簡單優(yōu)化方案,感興趣的朋友一起看看吧
    2018-08-08
  • Nginx+Tomcat負載均衡集群的實現(xiàn)示例

    Nginx+Tomcat負載均衡集群的實現(xiàn)示例

    本文主要介紹了Nginx + Tomcat負載均衡集群的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Nginx中server_name指令的參數(shù)詳解

    Nginx中server_name指令的參數(shù)詳解

    這篇文章主要介紹了Nginx中server_name指令的參數(shù)詳解,Nginx中的server_name指令主要用于配置基于名稱的虛擬主機,server_name指令一項很實用的功能便是可以在使用正則表達式的捕獲功能,這樣可以盡量精簡配置文件,需要的朋友可以參考下
    2023-08-08
  • Nginx結(jié)合keepalived實現(xiàn)雙機熱備方案

    Nginx結(jié)合keepalived實現(xiàn)雙機熱備方案

    Nginx難免遇見故障,可以使用使用keepalived來實現(xiàn)Nginx的高可用,本文主要介紹了Nginx結(jié)合keepalived實現(xiàn)雙機熱備方案,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • 簡介Nginx服務器的Websockets配置方法

    簡介Nginx服務器的Websockets配置方法

    這篇文章主要介紹了簡介Nginx服務器的Websockets配置方法,是使用Nginx服務器的網(wǎng)管的必備知識XD~需要的朋友可以參考下
    2015-06-06

最新評論