在nginx中,通過使用ngx_http_limit_req_module模塊,可以有效地限制訪問頻率,保護服務(wù)器免受惡意請求的困擾。以下是如何配置此模塊以實現(xiàn)訪問頻率限制的步驟:
-
首先,確認你的Nginx安裝已經(jīng)包含了ngx_http_limit_req_module模塊。你可以通過執(zhí)行nginx -V命令來檢查。如果看到–with-http_limit_req_module出現(xiàn)在輸出中,說明該模塊已安裝。
-
接下來,在nginx配置文件中(通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/your-site),找到或創(chuàng)建一個http、server或location塊,根據(jù)你希望限制訪問頻率的范圍來選擇合適的塊。
-
在選定的塊中,添加limit_req_zone指令來定義一個共享內(nèi)存區(qū)域,用于跟蹤客戶端的請求數(shù)量。例如:
http { ... limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; ... }
這里,$binary_remote_addr表示客戶端的IP地址。zone=mylimit:10m設(shè)定了名為mylimit的區(qū)域,分配了10MB的內(nèi)存。rate=1r/s規(guī)定了每秒鐘允許的請求數(shù)為1。
-
在需要限制訪問頻率的location塊中,應(yīng)用之前定義的限制,使用limit_req指令。例如:
server { ... location / { ... limit_req zone=mylimit burst=5 nodelay; ... } }
burst=5參數(shù)允許在短時間內(nèi)超出限制速率的請求被排隊處理,最多允許5個突發(fā)請求。nodelay參數(shù)表示這些突發(fā)請求將立即處理,而不進行延遲。
-
最后,保存配置文件,并重新加載Nginx以使更改生效。你可以使用以下命令之一:
sudo nginx -s reload
或者
sudo systemctl reload nginx
通過這些設(shè)置,Nginx將根據(jù)你的配置限制訪問頻率。當(dāng)客戶端在短時間內(nèi)發(fā)送過多請求時,Nginx會返回HTTP 503(服務(wù)暫時不可用)錯誤。