当前位置:首页 > 服务器技术 > 正文

Nginx IP白名单配置(手把手教你限制访问来源,提升服务器安全性)

在部署 Web 服务时,我们常常希望只允许特定的 IP 地址访问某些敏感页面或接口,比如后台管理、API 调试接口等。这时就可以使用 Nginx IP白名单 功能来实现访问控制。

本文将从零开始,详细讲解如何在 Nginx 中配置 IP 白名单,即使你是刚接触服务器运维的小白,也能轻松上手!

Nginx IP白名单配置(手把手教你限制访问来源,提升服务器安全性) IP白名单  Nginx访问控制 Nginx安全配置 allow deny规则 第1张

什么是 Nginx IP 白名单?

IP 白名单是一种访问控制策略,只允许列表中的 IP 地址访问指定资源,其他所有 IP 都会被拒绝。这在保护后台系统、防止未授权访问方面非常有效。

准备工作

  • 一台已安装 Nginx 的服务器(Linux 系统常见)
  • 你拥有服务器的 root 或 sudo 权限
  • 知道你要允许访问的 IP 地址(例如:192.168.1.100、203.0.113.45 等)

配置步骤详解

1. 找到 Nginx 配置文件

通常主配置文件位于:

/etc/nginx/nginx.conf

但更常见的做法是在站点配置文件中设置,比如:

/etc/nginx/sites-available/your-site

2. 编辑配置文件

使用你喜欢的编辑器(如 nano 或 vim)打开配置文件:

sudo nano /etc/nginx/sites-available/your-site

3. 添加 IP 白名单规则

假设你想保护 /admin 路径,只允许 IP 203.0.113.45198.51.100.22 访问,可以在 server 块中添加如下配置:

location /admin {    allow 203.0.113.45;    allow 198.51.100.22;    deny all;    # 其他配置,如 proxy_pass 或 root    proxy_pass http://backend;}

说明:

  • allow:允许指定 IP 访问
  • deny all:拒绝所有未被允许的 IP
  • 规则按顺序匹配,一旦匹配成功就停止

4. 支持 IP 段(CIDR 表示法)

如果你要允许整个网段,比如公司内网 192.168.1.0/24,可以这样写:

allow 192.168.1.0/24;

5. 重载 Nginx 配置

保存文件后,检查配置是否正确:

sudo nginx -t

如果显示 syntax is ok,就可以重载 Nginx:

sudo systemctl reload nginx

常见问题与注意事项

  • 顺序很重要:Nginx 从上到下匹配规则,先写 allow 再写 deny all。
  • 代理环境需注意:如果你的 Nginx 前面还有 CDN 或反向代理(如 Cloudflare),真实 IP 可能被隐藏。此时需要配合 real_ip 模块使用,否则白名单会失效。
  • 日志排查:被拒绝的请求会在 Nginx 的 access.log 或 error.log 中记录,方便调试。

总结

通过配置 Nginx IP白名单,你可以轻松实现基于 IP 的访问控制,有效提升 Web 服务的安全性。无论是保护管理后台,还是限制 API 调用来源,这种方法都简单高效。

记住关键三要素:allow + deny all + 正确的 location 路径。掌握这些,你就已经掌握了 Nginx安全配置 的核心技巧之一!

更多进阶用法包括结合 geo 模块实现国家 IP 封禁、动态白名单等,但对大多数场景来说,本文介绍的 Nginx allow deny规则 已完全够用。

现在就去试试吧!你的服务器会感谢你为它加上的这道“安全门”。