您好,登錄后才能下訂單哦!
Nginx 的 limit 模塊用于限制 Nginx 的訪問。
limit 模塊包含有兩個部分:
limit_conn
limit_conn 模塊的實現比 limit_req 簡單,直接對擁有相同變量值的連接進行計數,超過限制的連接返回 503 錯誤(Service Temporarily Unavailable)。
實際上,由于某一時刻,一個連接上一般只有一個待處理請求,且由于 keepalive 和 phase 處理函數無法判斷連接狀態 (新連接還是老連接),limit_conn 將正在處理的請求數作為連接數使用。
這個模塊包含以下部分:
limit_conn_zone
這個配置項用于指定連接數的計數空間。
# 語法 limit_conn_zone [$variable] zone=[zone-name]:[max-storage-space]; # 段 http # 示例 limit_conn_zone $binary_remote_addr zone=conn_ip:1m;
limit_conn
這個配置項用于指定連接數上限。
# 語法 limit_conn [zone-name] [max-connections]; # 段 http, server, location # 示例 limit_conn conn_ip 10;
limit_conn_status
可選項。該指令在 1.3.15 版本引入。指定拒絕請求時返回的 http code(狀態響應碼)。
# 語法 limit_conn_status [http-code]; # 段 http, server, location # 示例 limit_conn_status 502;
limit_req
與 limit_conn 不同的是,limit_conn 直接指定連接數上限,而 limit_req 通過 rate 參數對指定變量出現的速率(即頻率)指定的上限進行限制。
這個模塊包含以下部分:
limit_req_zone
這個配置項用于指定請求頻率的計數空間。
# 語法 limit_req_zone [$variable] zone=[zone-name]:[max-storage-space] rate=[max-request-rate]; # 段 http # 示例 # rate=1r/s 表示限制每秒只允許一次請求 limit_req_zone $binary_remote_addr zone=req_ip:1m rate=1r/s;
limit_req
這個配置項用于調用 limit_req_zone 指定的頻率上限,以及可選的補充參數。
# 語法 # burst 可選項。后面接整數,表示最大允許超過頻率限制的請求數 # nodelay 可選項。如果不希望超過的請求被延遲,可以使用 nodelay 參數 limit_req zone=req_ip (burst=[numbers]) (nodelay); # 段 http, server, location # 示例 limit_req zone=req_ip burst=5 nodelay;
limit_req_status
可選項。和 limit_conn_status 同理。指定拒絕請求時返回的 http code(狀態響應碼)。
# 語法 limit_req_status [http-code]; # 段 http, server, location # 示例 limit_req_status 502;
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。