客戶端跟服務(wù)器端交互時(shí),出現(xiàn)了一個(gè)失誤的定時(shí)設(shè)計(jì),造成服務(wù)器端10分鐘內(nèi)接收到超過30萬次請求,php后端瞬間的壓力暴增而崩潰。
目前的解決方案時(shí),由于短時(shí)間內(nèi)的重復(fù)請求獲取的內(nèi)容都是相同的,在Nginx層直接將有特殊參數(shù)的請求給drop掉,直接返回?zé)o結(jié)果。
代碼如下
shell
if ( $query_string ~ "api=(getpush|remove)") { return 200 '{"resultStatus":1,"allCount":0,"data":[]}'; break; }
這個(gè)解決方案不完善的地方,比如只禁掉90%的請求,或者只在指定時(shí)間內(nèi)生效,不知道有沒有同學(xué)有沒有類似的防攻擊解決方案?
可以考慮用一個(gè)upstream,設(shè)定一個(gè)權(quán)重,把90%的請求轉(zhuǎn)移到一個(gè)dummy的接口上
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號