nginx 限制某些類型的客戶端的訪問

連續幾天遭遇小規模的cc攻擊,雖然危害不大,但每次受到攻擊都要登錄到服務器上,把一套措施從新走一遍。一次是晚上11點,一次週六,影響休息,煩人至極。
這幾回的cc攻擊,應該是來自同一個組織,由於,正巧發現這幾回cc攻擊在access log中留下的客戶端類型都同樣
java

"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate"

因而突發奇想,把這個類型的客戶端禁止了不就能夠了嗎?
web服務器用的是nginx
用must-revalidate作爲關鍵詞,在nginx.conf中的 server段中添加幾句
python

if ($http_user_agent ~ must-revalidate) {
    return 503;
}

重啓nginx。模擬客戶端訪問了一下

nginx

curl 
www.okpython.com -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate"

返回 503 Service Temporarily Unavailable
之因此 return 503 而不 return 403 ,是爲了迷惑敵人而已。
返回一個503,對服務器來講影響不大,只佔用一個nginx的線程而已。相對來講仍是很划算的。
web

相關文章
相關標籤/搜索