掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
安裝Nginx Lua Redis模塊防止CC攻擊教程

多端合一響應(yīng)式網(wǎng)站開(kāi)發(fā):PC+平板+手機(jī),同一后臺(tái)修改數(shù)據(jù)多端同步更新提交您的需求,獲取網(wǎng)站建設(shè)與營(yíng)銷(xiāo)策劃方案報(bào)價(jià),我們會(huì)在1小時(shí)內(nèi)與您聯(lián)系!
在開(kāi)始之前,確保你的服務(wù)器已經(jīng)安裝了以下軟件:
Nginx
LuaJIT
Redis
如果沒(méi)有安裝,請(qǐng)參考相應(yīng)的官方文檔進(jìn)行安裝。
1、下載luanginxmodule和ngx_http_redis模塊:
wget https://github.com/openresty/luanginxmodule/archive/v0.10.14.tar.gz wget https://github.com/FRiCKLE/ngx_http_redis/archive/v2.3.0.tar.gz
2、解壓下載的模塊:
tar zxvf v0.10.14.tar.gz tar zxvf v2.3.0.tar.gz
3、編譯并安裝luanginxmodule:
cd luanginxmodule0.10.14 make && make install
4、編譯并安裝ngx_http_redis:
cd ngx_http_redis2.3.0 make && make install
5、修改nginx.conf,加載這兩個(gè)模塊:
load_module /path/to/luanginxmodule0.10.14/nginx_mod_lua.so; load_module /path/to/ngx_http_redis2.3.0/ngx_http_redis.so;
1、在nginx.conf中添加以下配置:
http {
...
lua_shared_dict limit_count 10m;
...
server {
...
location / {
access_by_lua_block {
redis.call("SET", "ip:" .. ngx.var.remote_addr, 1);
local count = tonumber(redis.call("GET", "ip:" .. ngx.var.remote_addr));
if count > 10 then
ngx.exit(ngx.HTTP_FORBIDDEN);
end
redis.call("INCR", "ip:" .. ngx.var.remote_addr);
}
...
}
...
}
...
}
2、重啟Nginx:
sudo service nginx restart
至此,你已經(jīng)成功配置了Nginx Lua Redis模塊來(lái)防止CC攻擊,當(dāng)一個(gè)IP地址在1秒內(nèi)訪問(wèn)超過(guò)10次時(shí),它將被拒絕訪問(wèn),你可以根據(jù)實(shí)際需求調(diào)整這個(gè)閾值。
相關(guān)問(wèn)題與解答
Q1:如何調(diào)整防止CC攻擊的閾值?
A1:在nginx.conf的access_by_lua_block中,找到以下代碼:
if count > 10 then
ngx.exit(ngx.HTTP_FORBIDDEN);
end
將10更改為你想要的閾值即可。
Q2:如何監(jiān)控被阻止的IP地址?
A2:你可以在Redis中使用SMEMBERS命令獲取被阻止的IP地址列表:
rediscli SMEMBERS limit_count

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流