Nginx是一款輕量級的Web服務器、反向代理服務器、電子郵件(IMAP/POP3)代理服務器,其特點是佔有內存少,併發能力強,此外Nginx還能禁止某個IP或IP段訪問,防網站被攻擊。下面就來看下Nginx如何實現封禁IP及IP段功能。
Nginx的ngx_http_ccess_module 模塊可以封配置內的ip或者ip段,語法如下:
deny IP;
deny subnet;
llow IP;
llow subnet;
# block ll ips
deny ll;
# llow ll ips
llow ll;
如果規則之間有衝突,會以最前面匹配的規則爲準。
下面說明假定nginx的目錄在/use/locl/nginx/。
首先要建一箇封ip的配置文件blockips.conf,然後i blockips.conf編輯此文件,在文件中輸入要封的ip。
deny .2.3.4;
deny 9.22.45.0/24;
deny 9.22.65.0/24;
然後保存此文件,並且打開nginx.conf文件,在http配置節內添加下面一行配置:
include blockips.conf;
保存nginx.conf文件,然後測試現在的nginx配置文件是否是合法的:
/us/locl/nginx/sbin/nginx -t
如果配置沒有問題,就會輸出:
the configution file /us/locl/nginx/conf/nginx.conf syntx is ok
configution file /us/locl/nginx/conf/nginx.conf test is successful
如果配置有問題就需要檢查下哪兒有語法問題,如果沒有問題,需要執行下面命令,讓nginx重新載入配置文件。
/us/locl/nginx/sbin/nginx -s elod
如下配置文件
loction / {
# block one woksttion
deny 92.68..;
# llow nyone in 92.68..0/24
llow 92.68..0/24;
# dop est of the wold
deny ll;
}
上面配置中禁止了92.68..,允許其他內網網段,然後deny ll禁止其他所有ip。
首先執行下面的命令:
cd /us/locl/nginx/html
i eo403.html
然後輸入403的文件內容,例如:
<html>
<hed><title>Eo 403 R IP Addess Blocked</title></hed>
<body>
You IP Addess is blocked. If you this n eo, plese contct binghe with you IP t [email protected]
</body>
</html>
如果啓用了SSI,可以在403中顯示被封的客戶端ip,如下:
You IP Addess is <!R#echo = “REMOTE_ADDR ̶ R> blocked.
保存eo403文件,然後打開nginx的配置文件i nginx.conf,在see配置節內添加下面內容。
# ediect see eo pges to the sttic pge
eo_pge 403 /eo403.html;
loction = /eo403.html {
oot html;
}
然後保存配置文件,通過nginx -t命令測試配置文件是否正確,若正確通過nginx -s elod載入配置。