网站后台IP白名单,只允许固定IP登录管理
网站后台只允许固定IP登录,是防止暴力破解和未授权访问最直接的手段之一。
无论你用的是宝塔面板、WordPress还是自研后台,核心思路都一样:在流量到达登录页之前,就把非白名单IP拦在外面。
下面按零基础也能照做的顺序,讲清准备条件、配置步骤、避坑点和验证方法。
动手前先确认三件事
配置IP白名单本身不复杂,但操作不当可能把自己也关在门外,所以先做好这些准备:
- 拿到你的固定公网IP:在浏览器访问
ip.cn或ifconfig.me,记下显示的IPv4地址。如果是动态IP,需要先联系运营商申请固定IP,否则白名单会失效。 - 确认服务器有SSH或其他备用登录方式:万一配置错误导致后台打不开,还能通过SSH进去修改。
- 备份当前配置:例如
cp /etc/nginx/conf.d/your-site.conf /etc/nginx/conf.d/your-site.conf.bak,出问题可快速回滚。
方式一:用防火墙限制整个后台目录
如果你的后台路径是 https://你的域名/admin,可以直接在服务器防火墙上限制该路径的访问来源。
以 iptables 为例,先放行你的固定IP,再拒绝其他所有IP访问后台端口。
假设后台使用443端口,你的固定IP是 203.0.113.10:
# 放行白名单IP访问443端口
iptables -I INPUT -p tcp -s 203.0.113.10 --dport 443 -j ACCEPT
# 拒绝其他IP访问443端口(注意:这会挡住所有HTTPS访问,包括前台)
iptables -A INPUT -p tcp --dport 443 -j DROP
上面这种方式会连网站前台一起挡住,只适合后台独立域名或独立端口的情况。
如果后台和前台共用域名,更推荐用Nginx做路径级限制。
方式二:Nginx按路径允许指定IP
这是最常用的做法,只限制 /admin 或 /wp-admin 路径,不影响前台正常访问。
在站点配置文件的 server 块内加入:
location /admin/ {
allow 203.0.113.10;
deny all;
# 下面保留原有的代理或PHP处理配置
try_files $uri $uri/ /index.php?$query_string;
}
如果后台是WordPress,把 /admin/ 换成 /wp-admin/ 和 /wp-login.php 分别配置。
改完后执行 nginx -t 检查语法,再 nginx -s reload 重载。
判断条件:allow 和 deny 的顺序很重要,Nginx从上往下匹配,一旦命中就停止。
白名单IP必须写在 deny all 前面,否则会被全部拒绝。
方式三:宝塔面板图形化设置
如果你用的是宝塔面板,不想手动改配置文件,可以按下面路径操作:
- 登录宝塔面板,进入「网站」→ 找到对应站点 → 点击「设置」。
- 选择「配置文件」,在
server块内找到或新增location段。 - 粘贴上面的Nginx白名单配置,保存后宝塔会自动重载Nginx。
- 如果只想限制宝塔面板本身的登录IP,进入「面板设置」→「面板端口」→ 开启「IP白名单」,填入你的固定IP。
宝塔的面板IP白名单只影响面板登录,不影响网站后台。
两者要分开设置,别混淆。
容易踩坑的几个地方
- 动态IP没固定:家用宽带多数是动态IP,重启光猫后IP会变,白名单立刻失效。建议先向运营商确认能否提供固定IP,或改用VPN固定出口。
- CDN回源IP干扰:如果网站套了CDN,Nginx看到的访问IP是CDN节点IP,不是你的真实IP。此时需要先配置
set_real_ip_from和real_ip_header,否则白名单永远不生效。 - 忘记放行自己:配置时先加
allow再加deny,改完立即用无痕窗口测试,不要等下线后才验证。 - 规则顺序写反:
deny all写在最前面会导致所有IP被拒绝,包括你自己。
验证是否真正生效
配置完成后,用两种方式验证:
- 用白名单内的IP访问后台地址,应能正常打开登录页。
- 用手机4G流量(非白名单IP)访问同一地址,应返回
403 Forbidden或连接被拒绝。
如果手机能打开,说明规则没生效,优先检查Nginx是否重载、allow 是否写对、CDN回源IP是否处理。
常见疑问
问:IP白名单能完全防止后台被入侵吗?
不能。它只是第一道门,建议同时开启强密码、双因素认证和登录失败限制。
问:公司网络出口IP经常变怎么办?
可以申请固定公网IP,或者把白名单范围放宽到整个网段,例如 allow 203.0.113.0/24;,但范围越大安全性越低。
问:配置后自己也被挡住了怎么恢复?
通过SSH登录服务器,删除或注释掉Nginx配置中的 deny all,重载Nginx即可恢复。所以操作前一定要保留SSH通道。
网站后台IP白名单的核心就是“先放行自己,再拒绝其他”,无论用防火墙、Nginx还是宝塔面板,验证时一定要用非白名单网络实测一次。
如果你正在配置只允许固定IP登录管理,建议先备份配置再动手,遇到403先查规则顺序和CDN回源设置。