Nginx
將 nginx 限速 IP 記錄到特定文件中
我正在尋找一種在 nginx 節點之間同步限速 IP 的方法。我想記錄這些 IP,然後將它們推送到數據庫中並開發一個代理來更新 nginx 配置文件中被阻止的 IP。
我的挑戰是找到一種方法讓 IP nginx 限制
429
狀態碼。那麼,是否可以將限速 IP 記錄到 nginx 中的特定文件中,或者您是否建議任何其他方法在節點之間同步限速 IP?
是的,您可以這樣做,甚至在nginx 文件中也有類似的範例。
該
access_log
指令還採用一個可選if=
參數來評估給它的變數,並且僅當結果不是 0 或空字元串時才記錄。結合在一個級別中可以有多個的事實,您可以access_log
根據需要以不同的方式登錄。不過,首先,您需要將您感興趣的HTTP 響應狀態
map
映射到一個變數。請記住,它必須在塊之外。map``server
map $status $rate_limited { default 0; 429 1; }
然後在相關
server
塊中,您將聲明您的access_log
.access_log /var/log/nginx/rate_limited.log combined if=$rate_limited;
請記住,
access_log
在一個級別中的任何外觀都會覆蓋更高級別的所有其他內容,因此您將希望從更高級別複製(或更好include
)access_log
您也想要使用的指令。