Nginx

將 nginx 限速 IP 記錄到特定文件中

  • September 5, 2021

我正在尋找一種在 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在一個級別中的任何外觀都會覆蓋更高級別的所有其他內容,因此您將希望從更高級別複製(或更好includeaccess_log您也想要使用的指令。

引用自:https://serverfault.com/questions/1076678