來源:互聯網
上載者:User
關鍵字
HTTP
nginx
Requests
Requests模組
這些模組預設會全部編譯進Nginx,除非手工指定某個模組在configure時排除。
這個模組允許為一個指定的會話或者某個特殊情況限制請求數目。
示例配置
HTTP { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ... server { ... location /search/ { limit_req zon e=one burst=5; }
指令
limit_req_log_level
語法:limit_req_log_level info|notice|warn|error
預設值:warn
使用欄位:HTTP
指定記錄日誌的等級。
limit_req_zone
語法:limit_req_zone $session_variable zone=name_of_zone:size rate=rate
預設值:none
使用欄位:HTTP
指令描述會話狀態存儲區域。
指令描述會話狀態存儲的某個區域,會話的值根據給定的變數,如下例:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
在這種情況下,將為一個名為「one」的區域分配10MB,這個區域的平均查詢速度為每秒最多1個請求。
會話將追蹤每個使用者,但是注意它替換了變數$remote_addr,我們使用的是$binary_remote_addr,減少會話的大小為64位元組,一個1MB的區域可以包含大約16000個會話狀態。
速度可以設置為每秒處理請求數和每分鐘處理請求數,其值必須是整數,所以如果你需要指定每秒處理少於1個的請求,2秒處理一個請求,可以使用 「30r/m」。
當會話狀態儲存區域為1M時理論上可以處理32000個會話,每個會話大小為32位元組。
limit_req
語法: limit_req=zone burst=burst [nodelay]
預設值:none
使用欄位:HTTP, server, location
這個指令指定區域(zone)可能的最大請求爆發值(burst),如果其值超過這個數,請求被延時,以便查詢按照給定的速度處理。 多餘的請求將被延遲直到他們的數目小於burst值,在這種情況下,請求將得到」Service unavailable」 (503)代碼,預設burst的值為0。
如下例:
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { location /search/ { limit_req zone=one burst=5; }
允許一個使用者平均每秒處理不超過1個請求,這個區域最多同時處理不超過5個查詢,如果在burst值之外的額外請求不可用,可以使用nodelay參數:
limit_req zone=one burst=5 nodelay;