织梦ip访问限制设置方法
织梦站点遭受恶意攻击、垃圾注册、恶意采集时,IP 访问限制是最直接有效的拦截手段。本文从服务器层面到程序层面,系统讲解织梦 IP 访问限制的多种配置方法。
一、IP 限制的应用场景
1. 拦截恶意攻击源
识别到持续暴力破解后台或注入攻击的 IP,直接封禁访问。
2. 限制非目标地区访问
本地化服务站点屏蔽非服务地区 IP,减少无效流量和安全隐患。
3. 后台仅限白名单访问
织梦后台 /dede/ 目录仅允许管理员 IP 访问,极大提升安全性。
二、Nginx 层面 IP 限制
1. 黑名单方式封禁 IP
# nginx.conf
location / {
# 封禁单个IP
deny 192.168.1.100;
# 封禁IP段
deny 192.168.1.0/24;
# 允许其他
allow all;
}
2. 白名单方式保护后台
# 仅允许指定IP访问织梦后台
location /dede/ {
allow 203.0.113.10; # 管理员IP
allow 203.0.113.0/24; # 管理网段
deny all;
try_files $uri $uri/ /index.php?$query_string;
}
3. 使用地图变量批量管理
http {
# 定义黑名单IP列表
geo $blocked_ip {
default 0;
192.168.1.100 1;
10.0.0.0/8 1;
}
server {
if ($blocked_ip) {
return 403;
}
}
}
Nginx 配置修改后需执行 nginx -t 测试语法,确认无误后执行 nginx -s reload 平滑重载,避免中断现有连接。
三、Apache 层面 IP 限制
1. 通过 .htaccess 配置
# .htaccess 文件 Order deny,allow Deny from 192.168.1.100 Deny from 10.0.0.0/8 Allow from all # 后台白名单保护 <Directory /dede> Order deny,allow Deny from all Allow from 203.0.113.10 </Directory>
2. Apache 主配置方式
<Directory "/var/www/html/dede"> Require ip 203.0.113.10 Require ip 203.0.113.0/24 </Directory>
四、织梦程序层面 IP 限制
1. 通过 common.inc.php 全局拦截
在织梦公共文件中添加 IP 检查,全站生效:
// /data/common.inc.php 末尾添加
$blocked_ips=array(
'192.168.1.100',
'10.0.0.0/8'
);
$visitor_ip=GetIP();
foreach($blocked_ips as $ip){
if(strpos($ip, '/') !==false){
// CIDR网段匹配
list($subnet, $mask)=explode('/', $ip);
if((ip2long($visitor_ip) & ~((1 << (32 - $mask)) - 1))==(ip2long($subnet) & ~((1 << (32 - $mask)) - 1))){
header('HTTP/1.1 403 Forbidden');
exit('访问被拒绝');
}
} else {
if($visitor_ip==$ip){
header('HTTP/1.1 403 Forbidden');
exit('访问被拒绝');
}
}
}
2. 后台访问 IP 白名单
// /dede/config.php 顶部添加
$admin_ips=array('203.0.113.10', '203.0.113.11');
if(!in_array(GetIP(), $admin_ips)){
ShowMsg('禁止访问', '../index.php');
exit();
}
3. 结合数据库动态管理
// 建立IP黑名单表
CREATE TABLE dede_ip_blocklist(
id INT AUTO_INCREMENT PRIMARY KEY,
ip VARCHAR(45) NOT NULL,
reason VARCHAR(255),
create_time INT
);
// 封禁时写入数据库
$dsql->ExecuteNoneQuery(
"INSERT INTO dede_ip_blocklist(ip,reason,create_time)
VALUES('$visitor_ip','频繁提交',".time().")"
);
// 访问时检查
$row=$dsql->GetOne(
"SELECT * FROM dede_ip_blocklist WHERE ip='$visitor_ip'"
);
if($row){
header('HTTP/1.1 403 Forbidden');
exit('您的IP已被限制访问');
}
五、自动封禁配置
1. 基于访问频率自动封禁
# 使用 fail2ban 自动封禁高频访问IP # /etc/fail2ban/jail.conf [dede-protect] enabled=true port=http,https filter=dede-filter logpath=/var/log/nginx/access.log maxretry=50 findtime=60 bantime=3600 # /etc/fail2ban/filter.d/dede-filter.conf [Definition] failregex=^<HOST> -.*"(GET|POST).*" ignoreregex=
2. 使用宝塔面板可视化配置
宝塔面板「安全」-「SSH端口」下方提供 IP 规则管理界面,支持图形化添加黑白名单,适合不熟悉命令行的站长使用。
六、注意事项
IP 限制需保留搜索引擎蜘蛛 IP 的访问权限,否则会影响收录。CDN 环境下获取的可能是 CDN 节点 IP 而非真实访客 IP,需配置 X-Forwarded-For 头获取真实 IP。封禁时间建议设置过期机制,避免长期误封正常用户。定期审查黑名单,及时解封已无威胁的 IP。
IP 限制是织梦站点安全防护的基础措施,建议与防火墙、WAF、验证码等手段配合构建纵深防御。日常运营中持续监控访问日志,及时发现异常 IP 并建立封禁规则库。在保障安全的同时注意不要过度限制,平衡防护强度与正常访问体验,让站点在开放服务的同时保持坚实的安全边界。