在Nginx中,可以使用ngx_http_limit_req_module
模塊來限制訪問頻率。這個模塊允許你設置請求速率限制,以防止惡意用戶或爬蟲對服務器發起過多的請求。以下是如何使用這個模塊來限制訪問頻率的步驟:
確保你的Nginx安裝包含了ngx_http_limit_req_module
模塊。你可以通過運行nginx -V
命令來檢查。如果你看到--with-http_limit_req_module
在輸出中,那么你的Nginx已經包含了這個模塊。
在Nginx配置文件中(通常是/etc/nginx/nginx.conf
或者/etc/nginx/sites-available/your-site
),找到或添加一個http
、server
或location
塊,這取決于你想要限制訪問頻率的范圍。
在相應的塊中,使用limit_req_zone
指令定義一個共享內存區域,用于存儲客戶端的請求計數。例如:
http {
...
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
...
}
這里,$binary_remote_addr
是一個變量,表示客戶端的IP地址。zone=mylimit:10m
定義了一個名為mylimit
的區域,分配了10MB的內存。rate=1r/s
設置了限制速率為每秒1個請求。
在需要限制訪問頻率的location
塊中,使用limit_req
指令來應用之前定義的限制。例如:
server {
...
location / {
...
limit_req zone=mylimit burst=5 nodelay;
...
}
}
burst=5
參數允許在短時間內超過限制速率的請求被排隊等待處理,最多允許5個突發請求。nodelay
參數表示不對這些突發請求進行延遲處理,即立即處理它們。
保存配置文件并重新加載Nginx以應用更改。你可以使用以下命令之一來實現:
sudo nginx -s reload
或者
sudo systemctl reload nginx
現在,Nginx將會根據你設置的限制來限制訪問頻率。如果客戶端在短時間內發送了過多的請求,Nginx將會返回HTTP 503(Service Temporarily Unavailable)錯誤。