在运维网站或Web应用时,你可能会遇到某些IP地址频繁发起恶意请求,比如暴力破解、爬虫攻击、DDoS尝试等。为了保护你的服务器和用户数据,Nginx IP黑名单是一种简单而有效的防御手段。本文将从零开始,详细讲解如何在Nginx中设置IP黑名单,即使是刚接触服务器的小白也能轻松上手。
什么是Nginx IP黑名单?
Nginx IP黑名单是指通过配置Nginx服务器,拒绝特定IP地址或IP段的访问请求。当黑名单中的IP尝试访问你的网站时,Nginx会直接返回403 Forbidden错误,从而有效防止恶意行为。
准备工作
在开始之前,请确保:
- 你已安装并运行了Nginx(版本不限,主流版本均可)
- 你有服务器的root或sudo权限
- 你知道要屏蔽的IP地址(可通过日志分析获得)
方法一:在server块中直接添加deny规则
这是最简单的方法,适合屏蔽少量IP。
打开你的Nginx站点配置文件(通常位于 /etc/nginx/sites-available/ 或 /etc/nginx/conf.d/ 目录下),找到对应的 server 块,在其中加入 deny 指令:
server { listen 80; server_name example.com; # 黑名单IP deny 192.168.1.100; deny 203.0.113.50; deny 198.51.100.0/24; # 屏蔽整个IP段 # 允许其他所有IP allow all; location / { root /var/www/html; index index.html; }} 注意:deny 规则的顺序很重要!Nginx会按顺序匹配规则,一旦匹配成功就执行对应操作。因此,deny 必须写在 allow all; 之前。
方法二:使用独立的黑名单文件(推荐)
如果你需要管理大量IP,建议使用单独的黑名单文件,便于维护。
步骤如下:
- 创建一个黑名单文件,例如
/etc/nginx/blacklist.conf:
# /etc/nginx/blacklist.confdeny 192.168.1.100;deny 203.0.113.50;deny 198.51.100.0/24;deny 203.0.113.0/24;
- 在你的站点配置文件中引入该文件:
server { listen 80; server_name example.com; include /etc/nginx/blacklist.conf; allow all; location / { root /var/www/html; index index.html; }} 测试与重载配置
修改完配置后,务必进行以下操作:
- 检查Nginx配置语法是否正确:
sudo nginx -t
- 如果显示“syntax is ok”,则重载Nginx使配置生效:
sudo systemctl reload nginx
现在,黑名单中的IP将无法访问你的网站,会看到 403 Forbidden 错误页面。
常见问题与技巧
- 如何查看被拦截的IP? 查看Nginx访问日志(通常为
/var/log/nginx/access.log),搜索403状态码。 - 能否只屏蔽某个路径? 可以!把
deny放在特定的location块中即可。 - IP段怎么写? 使用CIDR表示法,如
192.168.0.0/16表示192.168.x.x整个网段。
结语
通过以上步骤,你已经成功掌握了Nginx安全配置中最基础也最实用的技能之一——设置IP黑名单。这不仅能有效防止恶意访问,还能减轻服务器负载,提升整体安全性。结合日志分析工具,你可以动态更新黑名单,实现更智能的Nginx访问控制。
赶快动手试试吧!如有疑问,欢迎在评论区留言交流。
文章版权声明:除非注明,否则均为V5主机测评网_性价比VPS_性价比云服务器_免费独立服务器原创文章,转载或复制请以超链接形式并注明出处。
