Nginx访问控制列表详解(手把手教你设置IP白名单与黑名单)

V5主机测评

在网站运维和安全防护中,Nginx访问控制是一个非常实用的功能。通过配置访问控制列表(ACL),你可以允许或拒绝特定IP地址或IP段访问你的网站资源。这对于防止恶意攻击、限制后台管理页面访问等场景非常有效。

本教程将从零开始,详细讲解如何在Nginx中设置IP白名单和黑名单,即使是刚接触服务器配置的小白也能轻松上手。

什么是Nginx访问控制列表?

Nginx的访问控制列表(Access Control List, ACL)是通过allowdeny指令实现的。这些指令通常写在locationserverhttp块中,用于控制哪些客户端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
Nginx访问控制列表详解(手把手教你设置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

文章版权声明:除非注明,否则均为V5主机测评网_性价比VPS_性价比云服务器_免费独立服务器原创文章,转载或复制请以超链接形式并注明出处。