域名镜像(Domain Mirroring)是指第三方将自己的域名通过 DNS 解析指向你的服务器 IP,或通过反向代理等方式,使用户访问该域名时看到与你原站相同或近似相同的内容。这种行为会盗用站点内容、影响 SEO 排名、消耗服务器流量,并可能被用于钓鱼或品牌侵权。

虚拟主机在接收请求时,主要依靠 HTTP 请求中的 HTTP Host 请求头来判断用户访问的是哪个站点。如果镜像域名解析到了你的服务器 IP,而虚拟主机没有对该域名做拒绝处理,Web 服务器可能会把它当作默认站点或匹配到你的站点,从而输出你的网页。因此,屏蔽域名镜像的核心思路是:基于 Host 头设置域名白名单,未授权域名一律拒绝访问。
在 Apache 虚拟主机中,最常用的是在站点根目录的 .htaccess 文件中添加如下规则,屏蔽除指定域名外的所有请求:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(example\.com|www\.example\.com)$ [NC]
RewriteRule ^ - [F,L]
上述规则会返回 403 Forbidden。其中 RewriteCond 中的正则表达式表示:如果请求的域名不是 example.com 或 www.example.com,则拒绝访问。使用该规则时,需要将 example.com 替换为你自己的真实域名,并注意转义域名中的点号。
如果网站运行在 Nginx 环境下,可以通过设置 默认服务器(default_server) 来拒绝未授权域名。例如:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 403;
}
同时,需要为正域名的 server 配置增加主机名校验:
server {
listen 80;
server_name example.com www.example.com;
if ($host !~ ^(example\.com|www\.example\.com)$) {
return 403;
}
...
}
对于 HTTPS,推荐在 Nginx 默认服务器中启用 ssl_reject_handshake,使未知域名在 TLS 握手阶段就被拒绝,例如:
server {
listen 443 ssl default_server;
ssl_reject_handshake on;
}
如果使用 cPanel、Plesk 等虚拟主机面板,可以在面板中设置“默认站点”或“默认 vhost”的访问策略,将未绑定域名的请求指向一个仅返回 403 的目录。不要把镜像域名添加为附加域名或绑定域名,否则相当于主动允许该域名访问站点。
除了 Web 服务器层面的拦截,还可以在应用入口文件(如 index.php)中增加 PHP 层域名白名单校验。以下是一段简单的示例代码:
$allowedHosts = ['example.com', 'www.example.com'];
$host = strtolower($_SERVER['HTTP_HOST'] ?? '');
$host = preg_replace('/:\d+$/', '', $host);
if (!in_array($host, $allowedHosts, true)) {
http_response_code(403);
exit('Forbidden');
}
需要明确的是,上述方案主要针对“镜像域名直接解析到你的服务器 IP”的情况。如果镜像方使用独立的服务器做 反向代理,由镜像服务器向你的原站发起请求,那么你的服务器看到的是一个正常请求,Host 头也是你的真实域名,单纯依靠 Host 校验无法识别。这种情况下,建议配合 防火墙封禁镜像服务器 IP、使用 CDN/WAF 隐藏源站 IP、限制 CDN 回源 IP,以及对敏感资源增加登录鉴权等方式加强防护。
同时,启用 HTTPS 和 HSTS 可以强制浏览器使用原域名访问,降低 HTTP 镜像的可访问性;在页面头部输出 rel="canonical" 链接,可以声明页面权威地址,减少 SEO 重复收录风险。但这些措施不能从技术上完全阻止镜像,只能降低其影响。
还需注意,防盗链只保护图片和附件不被跨站引用,并不能阻止整个页面被镜像。虚拟主机屏蔽域名镜像的完整方案,应该是“域名白名单 + 默认站点拒绝 + 应用层校验 + 反代攻击防护”的组合。
如果镜像站涉及侵权、诈骗或商标滥用,应同步向镜像域名注册商、主机服务商或 CDN 服务商提交 滥用投诉;涉及版权问题可发送 DMCA 通知或律师函。技术手段与法律投诉并行,才能更有效地处置域名镜像问题。

查看详情

查看详情