return 444 是首选状态码,因 nginx 中它关闭连接且不返回任何响应,使恶意爬虫无法获取 html,而 404 和 502 仍返回内容或触发重试。

为什么 return 444 是首选状态码
因为 444 在 Nginx 中代表「关闭连接且不返回任何响应」,比 404 或 502 更彻底:浏览器收不到 HTTP 头,恶意镜像站的爬虫无法解析页面内容,连 HTML 都拿不到,自然没法做镜像抓取或 SEO 模拟。而 404 仍会返回完整响应体,部分镜像工具(如某些 PHP 抓取脚本)照常解析;502 还可能被当成源站异常,触发镜像站自动重试或降权逻辑。
注意:444 仅在 Nginx 中有效,Apache 不支持;若你用的是宝塔 + Apache,请跳到下个副标题。
如何配置默认站点并拦截所有未绑定域名(含 HTTPS)
宝塔面板本身不提供「全局域名白名单」开关,必须手动干预默认站点的 Nginx 配置文件。关键点有三个:监听端口、server_name 写法、SSL 兼容性。
- 进「网站 → 设置 → 配置文件」,找到你设为「默认站点」的那个站点的配置
- 在
server块开头添加两段监听:listen 80 default_server;和listen 443 ssl http2 default_server; -
server_name必须写成你的服务器公网 IP(如115.239.210.12),不能写_或空,否则 HTTPS 下不生效 - 必须配上 SSL 配置块(哪怕只是随便上传一个自签证书),否则
listen 443会报错,Nginx 启动失败 - 在
location /前加一行:return 444;
改完保存,执行 nginx -t 确认语法无误,再 systemctl reload nginx 或在宝塔里点「重载配置」。
Apache 用户怎么等效实现(不依赖 .htaccess)
Apache 没有 default_server 概念,靠 NameVirtualHost + 虚拟主机顺序控制优先级。核心是让「拒绝 IP 访问」的 VirtualHost 排在最前面,并且不指定 ServerAlias。
- 编辑
/www/server/apache/conf/extra/httpd-vhosts.conf(若没启用虚拟主机,则改/www/server/apache/conf/httpd.conf末尾) - 插入以下块(IP 替换为你的真实 IP):
<virtualhost> ServerName 115.239.210.12 <directory> Require all denied </directory></virtualhost> - 确保这个块出现在所有其他
VirtualHost之前——Apache 匹配第一个符合条件的块,顺序即策略 - HTTPS 需额外加一个
<virtualhost></virtualhost>块,同样Require all denied,且必须包含有效的SSLCertificateFile和SSLCertificateKeyFile,否则 Apache 启动失败
光封 IP 不够,镜像站用 CDN 或代理绕过怎么办
单纯靠 deny from 1.2.3.4 或宝塔防火墙封 IP 效果极差:镜像站普遍走 Cloudflare、百度云加速、又拍云等 CDN,真实访客 IP 被隐藏,你封的只是 CDN 节点 IP,一小时后就换一批。
真正有效的组合是:
- 上面配置的
return 444(切断所有非域名访问) - 在主站入口 PHP 文件(如
index.php)开头加域名校验:if ($_SERVER['HTTP_HOST'] !== 'www.yourdomain.com' && $_SERVER['HTTP_HOST'] !== 'yourdomain.com') { header('HTTP/1.1 444 Connection Closed'); exit; } - 数据库内容中搜索并清理已注入的恶意 JS(如
<script src="//xxx"></script>),否则镜像站即使拿到 HTML 也会被二次污染
最后提醒一句:别信「JS 跳转回自己域名」这种方案。它对用户可见、影响首屏渲染、且搜索引擎明确识别为跳转,反而可能把镜像站的权重临时“借”给你的域名——解决不了排名抢占,只增加加载失败率。











