Nginx服務器限速功能(三)
發(fā)布時間:2021-03-31 作者:未知
簡述:在我們的例子中,隊列中的第20個數據包等待2秒鐘被轉發(fā),此時對其的響應可能對客戶端不再有用。要解決這種情況,請將nodelay參數與burst參數一起添加:...在我們的例子中,隊列中的第20個數據包
在我們的例子中,隊列中的第20個數據包等待2秒鐘被轉發(fā),此時對其的響應可能對客戶端不再有用。 要解決這種情況,請將nodelay參數與burst參數一起添加:...在我們的例子中,隊列中的第20個數據包等待2秒鐘被轉發(fā),此時對其的響應可能對客戶端不再有用。 要解決這種情況,請將nodelay參數與burst參數一起添加:通過nodelay參數,Nginx仍然根據burst參數在隊列中分配時隙,并且強加配置的速率限制,但是不排除轉發(fā)排隊的請求。 相反,當請求到達“太快”時,Nginx會立即轉發(fā),只要隊列中有一個可用的時隙。 它將該插槽標記為“已占用”,并且不會將其釋放以供其他請求使用,直到經過適當的時間(在本例中為100毫秒之后)。假設像以前一樣,20個時隙的隊列是空的,21個請求同時從給定的IP地址到達。 Nginx立即轉發(fā)所有21個請求,并將隊列中的20個插槽標記為已占用,然后每100毫秒釋放1個插槽(如果有25個請求,Nginx會立即轉發(fā)21個插槽,標記20個插槽,拒絕4個請求狀態(tài)503 )。現在假設在第一組請求之后101毫秒被轉發(fā),另外20個請求同時到達。 隊列中只有1個插槽被釋放,所以Nginx轉發(fā)1個請求,并拒絕其他19個狀態(tài)為503的隊列。 如果在20個新請求到達之前經過了501毫秒,那么5個空閑空間,所以Nginx立即轉發(fā)5個請求,拒絕15個請求。效果相當于每秒10個請求的速率限制。 如果您希望在不限制請求之間的允許間隔的情況下施加速率限制,則nodelay選項非常有用。注意:對于大多數部署,我們建議將burst和nodelay參數包含到limit_req指令中。高級配置示例通過將基本速率限制與其他Nginx功能相結合,您可以實現更多細微的流量限制。白名單此示例顯示如何對不在“白名單”上的任何人的請求施加速率限制。這個例子使用了geo和map指令。 geo塊為白名單中的IP地址分配一個0值到$limit值,其他0 1 。 然后,我們使用地圖將這些值轉換為一個密鑰,以便:如果$limit是0,$limit_key設置為空字符串。如果$limit是1,則$limit_key以二進制格式設置為客戶端的IP地址。把兩者放在一起,$limit_key被設置為白名單IP地址的空字符串,否則設置為客戶端的IP地址。 當limit_req_zone目錄(密鑰)的第一個參數為空字符串時,限制不適用,因此列入白名單的IP地址(在10.0.0.0/8和192.168.0.0/24子網中)不受限制。 所有其他IP地址每秒限制為5個請求。limit_req指令將限制應用于/位置,并且允許在配置的限制上突發(fā)多達10個分組而沒有轉發(fā)延遲在一個位置包含多個limit_req指令您可以在一個位置包含多個limit_req指令。 所有與給定請求匹配的限制都被應用,這意味著使用最嚴格的限制。 例如,如果多于一個指令施加延遲,則使用最長的延遲。 同樣,如果這是任何指令的影響,即使其他指令允許它們通過,請求也會被拒絕。
點擊展開全文
鄭州騰佑科技有限公司(以下簡稱“騰佑科技”)成立于2009年, 總部位于鄭州,是 一家致力于互聯網服務業(yè)的高新技術企業(yè),公司主營業(yè)務以互聯網數據中心、云計算、人 工智能、軟件開發(fā)、安全服務“互聯網+”行業(yè)解決方案及行業(yè)應用等相關業(yè)務。
售前咨詢熱線:400-996-8756
備案提交:0371-89913068
售后客服:0371-89913000
熱門活動