http { limit_conn_zone $binary_remote_addr zone=addr:10m; //$binary_remote_addr 表示通过remote_addr这个标识来做限制 //zone=addr:10m 表示生成一个大小为10M,名字为addr的内存区域 ... server { location /download/ { limit_conn addr 1; #限制并发数 limit_rate 50k; #限制带宽 } }
$binary_remote_addr :表示透過remote_addr這個標識來做限制,「binary_」的目的是縮寫記憶體佔用量,是限制同一客戶端ip位址
zone=addr:10m:表示產生一個大小為10M,名字為addr的記憶體區域,用來儲存存取的頻次資訊
http狀態碼400-499 用來指出客戶端的錯誤。
500-599 用於支援伺服器錯誤。
#burst#rate=1r/s:表示允許相同識別的客戶端的存取頻次,這裡限制的是每秒1次,即每秒只處理一個請求,還可以有例如30r/m的,即限制每2秒訪問一次,即每2秒才處理一個請求。
burst=5:burst爆發的意思,這個配置的意思是設定一個大小為5的緩衝區.
當有大量請求(爆發)過來時,超過了訪問頻次限制的請求可以先放到這個緩衝區內等待,但這個等待區裡的位置只有5個,超過的請求會直接報503的錯誤然後回傳。
#如果設置,會在瞬時提供處理(burst rate)個請求的能力,請求超過(burst rate)的時候就會直接返回503,永遠不存在請求需要等待的情況。 (這裡的rate的單位是:r/s).
如果沒有設置,則所有請求會依序等待排隊.##############limit_rate限制頻寬########################### ############
#location表達式類型
#~ 表示執行一個正規匹配,區分大小寫
~* 表示執行一個正規匹配,不區分大小寫
^~ 表示普通字元匹配。優先使用前綴匹配。如果匹配成功,則不再匹配其他location。
= 進行普通字元精確比對。也就是完全匹配。
@ “@” 定義一個命名的location,使用在內部定向時,例如error_page, try_files
/ :通用匹配, 如果沒有其它匹配,任何請求都會匹配到;
#location 表達式優先權
location = > location 完整路徑> location ^~ 路徑> location ~ ,~* 正規順序> location 部分起始路徑(前綴匹配) >/
為了安全,日誌目錄不需要給你nginx用戶存取權限,設定# chmod -R 700 /usr/local/nginx/logs
#禁止不必要的目錄日誌
以上是nginx限流及組態管理的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!