当前位置:网站首页 >  攻略

Nginx配置网站访问黑白名单设置保姆级教程

时间:2026年06月12日 23:56:47 来源:易频IT社区

一、环境准备与基础检查

在开始配置之前,请确保你的服务器已经安装了 Nginx。本教程以 Linux 环境为例,涵盖 CentOS 和 Ubuntu 系统。Nginx 的访问控制功能由 ngx_http_access_module 模块提供,该模块默认已内置,无需额外安装。

1. 安装 Nginx

如果尚未安装,请执行以下对应系统的命令进行安装:

  • CentOS/RHEL: yum install nginx -y
  • Ubuntu/Debian: apt install nginx -y

2. 确认配置文件路径

通常 Nginx 的主配置文件位于 /etc/nginx/nginx.conf,而站点配置通常存放在 /etc/nginx/conf.d/ 目录下。本教程将直接在 server 块中进行演示,你可以根据实际情况调整路径。

二、配置 IP 黑名单(拒绝特定访问)

黑名单用于拒绝特定的 IP 地址或网段访问网站。这是最常见的安全防护手段,可以有效阻断恶意扫描或攻击源。

1. 修改配置文件

打开你需要配置的站点配置文件,在 server 块中添加 deny 指令。以下是一个完整的配置示例:

```nginx server { listen 80; server_name example.com; 设置黑名单:拒绝 192.168.1.100 和 10.0.0.0/8 网段访问 deny 192.168.1.100; deny 10.0.0.0/8; 允许其他所有 IP 访问(虽然默认是允许,但写上更清晰) allow all; location / { root /usr/share/nginx/html; index index.html index.htm; } } ```

2. 配置详解

  • deny 192.168.1.100;:拒绝单个 IP 访问。
  • deny 10.0.0.0/8;:拒绝整个 10.x.x.x 网段。支持 CIDR 格式。

3. 测试并重载配置

配置修改完成后,必须先测试语法是否正确,再重载服务:

  • 测试语法:nginx -t
  • 重载服务:systemctl reload nginx

4. 验证效果

在被拒绝的 IP 机器上执行 curl -I http://example.com,将返回 403 Forbidden。在允许的 IP 机器上执行相同命令,则返回 200 OK

三、配置 IP 白名单(仅允许特定访问)

白名单用于内部系统或后台管理页面,仅允许指定的 IP 地址访问,拒绝其他所有连接。配置白名单时,规则的顺序至关重要。

1. 修改配置文件

server 块或特定的 location 块中添加规则。注意:必须先写 allow,最后写 deny all

```nginx server { listen 80; server_name admin.example.com; 设置白名单:仅允许公司内网和特定 IP 访问 allow 192.168.1.0/24; 允许内网网段 allow 203.0.113.5; 允许特定外网 IP(如老板的办公 IP) 拒绝其他所有 IP deny all; location / { root /usr/share/nginx/html/admin; index index.html; } } ```

2. 配置逻辑详解

Nginx 的访问控制规则是自上而下进行匹配的,一旦匹配成功则停止后续规则:

  • 当请求 IP 为 192.168.1.50 时,匹配到 allow 192.168.1.0/24;,访问通过。
  • 当请求 IP 为 8.8.8.8 时,不匹配任何 allow 规则,继续向下,匹配到 deny all;,访问被拒绝。

3. 生效配置

  • 执行 nginx -t 确保无语法错误。
  • 执行 systemctl reload nginx 使配置生效。

四、使用独立文件管理黑白名单

当 IP 列表很长时,直接写在主配置文件中会导致难以维护。最佳实践是将黑白名单规则存放在独立的文件中,然后在主配置中引用。

1. 创建黑名单文件

Nginx配置网站访问黑白名单设置保姆级教程

在 Nginx 配置目录下创建 blockips.conf 文件:

  • 执行命令:vi /etc/nginx/conf.d/blockips.conf

在文件中输入拒绝规则(不需要写 server 或 location 块):

```nginx /etc/nginx/conf.d/blockips.conf deny 123.45.67.89; deny 101.102.103.0/24; deny 11.22.33.44; ```

2. 在主配置中引用

回到 nginx.conf 或站点配置文件中,使用 include 指令:

```nginx http { ... 其他配置 引入黑名单文件,这将作用于 http 块下的所有 server include /etc/nginx/conf.d/blockips.conf; server { listen 80; server_name example.com; ... } } ```

如果只想针对某个网站生效,可以将 include 放在对应的 server 块内。

3. 动态更新维护

以后需要添加封禁 IP 时,只需编辑 blockips.conf 文件,添加一行 deny 1.2.3.4;,保存后执行 nginx -t && systemctl reload nginx 即可,无需动主配置文件。

五、网段屏蔽与正则匹配进阶

除了标准的 IP 和网段,Nginx 还支持更灵活的配置方式。

1. 精确网段配置

使用 CIDR 格式可以精确控制网段大小:

  • deny 192.168.1.0/24;:匹配 192.168.1.1 到 192.168.1.254。
  • deny 10.0.0.0/8;:匹配 10.0.0.0 到 10.255.255.255。

2. 配置优先级陷阱避坑

如果在 httpserverlocation 三个层级都配置了规则,Nginx 会以最小范围(最内层)的配置为准,且所有层级的规则都会被读取并合并判断。

例如:http 层写了 allow all,location 层写了 deny all。如果请求进入该 location,最终结果是 deny all。建议将访问控制规则尽量靠近业务逻辑层(即 location 块)配置,避免逻辑混乱。

六、配置生效与故障排查

配置完成后,如果出现预期之外的情况,请按以下步骤排查。

1. 强制检查语法

修改配置后必须执行 nginx -t。如果提示 directive "allow" is not allowed here,说明你将 allow/deny 指令放在了不支持的位置(例如 if 块中,access 模块不支持在 if 中使用)。

2. 检查规则顺序

这是最常见的错误。白名单模式必须确保 deny all 在所有 allow 规则之后。如果 deny all 在最前面,所有访问都将被拒绝。

3. 查看错误日志

如果客户端一直报错 403 或 500,查看 Nginx 错误日志定位原因:

  • 日志路径通常在:/var/log/nginx/error.log
  • 查看实时日志:tail -f /var/log/nginx/error.log

4. 清除浏览器缓存

浏览器可能缓存了之前的 403 或 200 状态。测试时建议使用 curl 命令,或者使用浏览器的无痕模式,以确保获取最新的服务器响应。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图