在网站运维和安全防护中,Nginx访问控制是一个非常实用的功能。通过配置访问控制列表(ACL),你可以允许或拒绝特定IP地址或IP段访问你的网站资源。这对于防止恶意攻击、限制后台管理页面访问等场景非常有效。
本教程将从零开始,详细讲解如何在Nginx中设置IP白名单和黑名单,即使是刚接触服务器配置的小白也能轻松上手。
什么是Nginx访问控制列表?
Nginx的访问控制列表(Access Control List, ACL)是通过allow和deny指令实现的。这些指令通常写在location、server或http块中,用于控制哪些客户端IP可以访问指定资源。
基本语法说明
allow IP地址;—— 允许指定IP访问deny IP地址;—— 拒绝指定IP访问allow all;—— 允许所有IP访问deny all;—— 拒绝所有IP访问
注意:Nginx会从上到下依次匹配规则,一旦匹配成功就立即执行并停止后续判断。
实战案例:设置后台管理页面的IP白名单
假设你有一个后台管理页面路径为/admin/,你只想让公司内网(如192.168.1.0/24)和你的家庭IP(如203.0.113.45)访问,其他IP一律拒绝。
编辑你的Nginx配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default),在server块中添加如下配置:
location /admin/ { allow 192.168.1.0/24; allow 203.0.113.45; deny all;} 解释:
- 首先允许192.168.1.0/24网段(即192.168.1.1~192.168.1.254)访问
- 再允许单个IP 203.0.113.45访问
- 最后拒绝所有其他IP
如何设置全局黑名单?
如果你发现某个IP频繁扫描你的网站,可以将其加入黑名单。例如,在server块顶部添加:
server { listen 80; server_name example.com; # 黑名单:禁止恶意IP deny 198.51.100.77; deny 203.0.113.100; location / { root /var/www/html; index index.html; }} 配置完成后别忘了重载Nginx
修改配置后,必须重新加载Nginx使配置生效:
sudo nginx -t # 先测试配置是否正确sudo systemctl reload nginx # 重载配置(不中断服务)
常见问题与注意事项
- 如果使用了CDN(如Cloudflare),真实用户IP会被隐藏,此时需配合
real_ip模块获取真实IP,否则ACL可能失效。 - IP段写法:
192.168.1.0/24表示整个C类网段;10.0.0.0/8表示A类私有网段。 - 建议将敏感路径(如/phpmyadmin、/wp-admin)都加上IP白名单,这是提升网站安全的重要手段。
总结
通过合理配置Nginx访问控制列表,你可以轻松实现基于IP的访问限制,有效提升服务器安全性。无论是设置IP白名单保护后台,还是使用限制访问IP阻止攻击者,这些操作都非常简单高效。
记住:安全无小事,从基础做起。希望这篇教程能帮助你掌握Nginx的安全配置技巧!
本文关键词:Nginx访问控制、IP白名单、Nginx安全配置、限制访问IP

