溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Nginx limit 限制訪問(wèn)模塊的方法

發(fā)布時(shí)間:2020-10-25 00:56:50 來(lái)源:腳本之家 閱讀:168 作者:南琴浪博客 欄目:服務(wù)器

Nginx 的 limit 模塊用于限制 Nginx 的訪問(wèn)。

limit 模塊包含有兩個(gè)部分:

  1. limit_conn 用于對(duì)連接數(shù)量的限制
  2. limit_req 用于對(duì)請(qǐng)求頻率的限制

limit_conn

limit_conn 模塊的實(shí)現(xiàn)比 limit_req 簡(jiǎn)單,直接對(duì)擁有相同變量值的連接進(jìn)行計(jì)數(shù),超過(guò)限制的連接返回 503 錯(cuò)誤(Service Temporarily Unavailable)。

實(shí)際上,由于某一時(shí)刻,一個(gè)連接上一般只有一個(gè)待處理請(qǐng)求,且由于 keepalive 和 phase 處理函數(shù)無(wú)法判斷連接狀態(tài) (新連接還是老連接),limit_conn 將正在處理的請(qǐng)求數(shù)作為連接數(shù)使用。

這個(gè)模塊包含以下部分:

limit_conn_zone

這個(gè)配置項(xiàng)用于指定連接數(shù)的計(jì)數(shù)空間。

# 語(yǔ)法
limit_conn_zone [$variable] zone=[zone-name]:[max-storage-space];

# 段
http

# 示例
limit_conn_zone $binary_remote_addr zone=conn_ip:1m;

limit_conn

這個(gè)配置項(xiàng)用于指定連接數(shù)上限。

# 語(yǔ)法
limit_conn [zone-name] [max-connections];

# 段
http, server, location

# 示例
limit_conn conn_ip 10;

limit_conn_status

可選項(xiàng)。該指令在 1.3.15 版本引入。指定拒絕請(qǐng)求時(shí)返回的 http code(狀態(tài)響應(yīng)碼)。

# 語(yǔ)法
limit_conn_status [http-code];

# 段
http, server, location

# 示例
limit_conn_status 502;

limit_req

與 limit_conn 不同的是,limit_conn 直接指定連接數(shù)上限,而 limit_req 通過(guò) rate 參數(shù)對(duì)指定變量出現(xiàn)的速率(即頻率)指定的上限進(jìn)行限制。

這個(gè)模塊包含以下部分:

limit_req_zone

這個(gè)配置項(xiàng)用于指定請(qǐng)求頻率的計(jì)數(shù)空間。

# 語(yǔ)法
limit_req_zone [$variable] zone=[zone-name]:[max-storage-space] rate=[max-request-rate];

# 段
http

# 示例
# rate=1r/s 表示限制每秒只允許一次請(qǐng)求
limit_req_zone $binary_remote_addr zone=req_ip:1m rate=1r/s;

limit_req

這個(gè)配置項(xiàng)用于調(diào)用 limit_req_zone 指定的頻率上限,以及可選的補(bǔ)充參數(shù)。

# 語(yǔ)法
# burst  可選項(xiàng)。后面接整數(shù),表示最大允許超過(guò)頻率限制的請(qǐng)求數(shù)
# nodelay 可選項(xiàng)。如果不希望超過(guò)的請(qǐng)求被延遲,可以使用 nodelay 參數(shù)
limit_req zone=req_ip (burst=[numbers]) (nodelay);

# 段
http, server, location

# 示例
limit_req zone=req_ip burst=5 nodelay;

limit_req_status

可選項(xiàng)。和 limit_conn_status 同理。指定拒絕請(qǐng)求時(shí)返回的 http code(狀態(tài)響應(yīng)碼)。

# 語(yǔ)法
limit_req_status [http-code];

# 段
http, server, location

# 示例
limit_req_status 502;

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI