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」
directivenginx

#這裏,設置客戶端的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) 錯誤。web

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;
#單鏈接限速

}

}服務器

相關文章
相關標籤/搜索