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;
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答