Nginx服務器防止被壓力測試

最近經常用人幫忙做壓力測試,用webbech或者ab等一些工具模擬併發壓服務器,若服務器沒有限制連接數或帶寬,服務器很容易被壓跨。
cat nginx.conf

http {

limit_conn_zone $binary_remote_addr zone=one:10m;
#如果在1.1.8之後版本還用語法:limit_zone name $variable size,會報警告nginx: [warn] the
“limit_zone” directive is deprecated, use the “limit_conn_zone”
directive

#這裏,設置客戶端的IP地址作爲鍵。注意,這裏使用的是$binary_remote_addr變量,而不是$remote_addr變量。$remote_addr變量的長度爲7字節到15字節不等,而存儲狀態在32位平臺中佔用32字節或64字節,在64位平臺中佔用64字節。而$binary_remote_addr變量的長度是固定的4字節,存儲狀態在32位平臺中佔用32字節或64字節,在64位平臺中佔用64字節。一兆字節的共享內存空間可以保存3.2萬個32位的狀態,1.6萬個64位的狀態。如果共享內存空間被耗盡,服務器將會對後續所有的請求返回 503(Service Temporarily Unavailable) 錯誤。

server {
limit_conn one 10;
#指定一個會話最大的併發連接數(與之前的limit_conn_zone配合使用),可對單獨目錄做出限制,一個IP只能發起10個連接,多於10個,一律返回Services unavailable(503)狀態,生產環境需考慮辦公室或者局域網共享IP問題
limit_rate_after 1m;
#設置單連接限速條件(當下載文件字節數超過1MB後,limit_rate限速生效,限速100k)
limit_rate 100k;
#單連接限速

}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章