首頁  >  問答  >  主體

nginx 隨機回應功能

客戶端跟伺服器端互動時,出現了一個失誤的定時設計,造成伺服器端10分鐘內接收到超過30萬次請求,php後端瞬間的壓力暴增而崩潰。

目前的解決方案時,由於短時間內的重複請求所獲取的內容都是相同的,在Nginx層直接將有特殊參數的請求給drop掉,直接回傳無結果。

程式碼如下

shell    if ( $query_string ~ "api=(getpush|remove)")
    {
        return 200 '{"resultStatus":1,"allCount":0,"data":[]}';
        break;
    }

這個解決方案不完全的地方,例如只禁掉90%的請求,或只在指定時間內生效,不知道有沒有同學有沒有類似的防攻擊解決方案?

我想大声告诉你我想大声告诉你2712 天前464

全部回覆(2)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-16 17:27:34

    可以考慮用一個upstream,設定一個權重,把90%的請求轉移到一個dummy的介面上

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 17:27:34

    fine, 自己來把坑補上

    nginx+lua=openresty

    回覆
    0
  • 取消回覆