最有效方式是添加*域名站点并return 444,因其直接断连无响应;需配合全局host白名单校验(map+$invalid_host+if)防止伪造host头绕过。

直接返回 444 是最有效的方式,比返回 403 或 404 更彻底——它不发任何响应包,连接直接断开,连攻击者都收不到反馈。
为什么不能只删掉默认站点
宝塔没有“删除默认站点”这个安全动作。你手动删掉面板里显示的默认站,Nginx 配置里仍可能残留 server_name _; 或隐式 default_server,重启后自动 fallback 到第一个网站。更危险的是:如果那个网站是 WordPress,/wp-login.php、/robots.txt 全部暴露,等于白送入口。
- 宝塔只要没显式配置
*域名的站点,就会启用内置兜底逻辑,把所有未匹配请求导给「第一个创建的网站」 -
server_name _;是 Nginx 的通配写法,不是占位符,它真会匹配任意 Host - 单纯在面板「网站」列表里删站点,不会清理
/www/server/panel/vhost/nginx/下对应配置文件,也不会动nginx.conf里的include规则
添加 * 域名站点并 return 444
这是宝塔环境下最可控、最易验证的做法。关键不是“加个空站”,而是让这个站成为唯一生效的兜底出口,并用 444 切断所有试探。
- 在宝塔「网站」→「添加站点」,域名填
*(仅一个星号,前后无空格、无其他字符) - 根目录选一个完全空的路径,例如
/www/wwwroot/default_444,确认该目录下 没有任何文件,包括.htaccess、index.html - 进入该站点「设置」→「配置文件」,找到
location /块,在里面插入一行:return 444; - 如需同时拦截 HTTPS 请求,确保该站点的配置中包含监听
443端口的server块,并同样加return 444; - 保存后点击「重载配置」,再用
curl -I http://你的服务器IP验证:应无响应体,且连接立即关闭(curl会报Empty reply from server)
额外加固:Nginx 层过滤非白名单 Host 头
仅靠 * 站点还不够。攻击者可用 curl -H "Host: evil.com" http://你的IP 绕过域名匹配,直接打到你某个真实网站的 server 块里。这时候必须在全局 http 块做 Host 白名单校验。
- 编辑
/www/server/nginx/conf/nginx.conf,在http {块开头附近加入:map $host $invalid_host { default 1; yourdomain.com 0; www.yourdomain.com 0; } - 然后在每个你关心的网站对应的
server块顶部(必须在root、location之前)加上:if ($invalid_host) { return 444; } - 切记:不要把
map写进server或location;不要用$http_host(可能为空或含非法字符),只用$host - 改完执行
nginx -t测试语法,再nginx -s reload生效
真正容易被忽略的是 Host 头伪造这个路径——它不走域名匹配,直接命中你已配置的正式站点。所以 map + if 必须加在每一个 server 块最顶上,而不是只依赖默认站。否则,恶意请求照样能读取你的真实首页、泄露 Server 头、甚至触发 PHP 探针。











