NGINX:如何處理發出無條件全面重定向的伺服器上明顯虛假的流量?

NGINX:如何處理發出無條件全面重定向的伺服器上明顯虛假的流量?

我在嘗試配置 NGinx 時遇到了一個相當有趣的問題。我運行一個小型 Web 伺服器,使用 NGinx 1.13.8 透過 HTTPS 提供所有服務。正如此類配置的典型情況,它還會偵聽連接埠 80,並使用相同的 URI 將所有請求全面重定向到連接埠 443,使用以下設定片段來實現此目的:

location / {
    return 301 https://$server_name$request_uri;
}

這本身就可以很好地滿足我的需要。然而,我已經開始收到一些明顯偽造且易於識別的流量(大約5 分鐘的隨機時間段,我從看似隨機的IP 中獲得了上千個新連接,所有這些連接在用戶代理標頭中都有一個共同的前綴,所有這些都完全正確)相同的請求 ( HEAD / HTTP/1.1),所有請求都保持連接開啟直到逾時,並且所有請求都從不遵循重定向)。

理想情況下,我希望在識別出這些連接後立即關閉它們,以最大程度地減少它們浪費的資源量。目前,我已經提出了這個修改後的配置片段來執行此操作:

location / {
    return 301 https://$server_name$request_uri;
}

location = / {
    if ($method = "HEAD") {
        set $drop M;
    }
    if ($http_user_agent ~* "Dalvik/2.1.0 (Linux U ") {
        set $drop "U${drop}";
    }
    if ($drop = "UM") {
        return 444;
    }
}

然而,這似乎不起作用(因為日誌仍然顯示這些完全返回 301 的流量峰值。我還在第一個位置內嘗試了不太具體的匹配(僅在 User-Agent 標頭或方​​法上進行全面匹配)塊,這似乎也不起作用。

所以,我有兩個問題:

  1. 為什麼這不起作用?
  2. 是否有更好的方法來處理這種流量,並且不會涉及防火牆中的深度資料包檢查?

相關內容