可通过五种方法禁止宝塔面板中IP直接访问网站:一、建默认站点并配置return 444;二、修改0.default.conf设default_server并return 444;三、用if正则匹配IP返回403;四、配带Cloudflare证书的默认HTTPS站点并return 444;五、在安全模块添加host正则拒绝规则。

如果您在宝塔面板中部署了网站,但发现可通过服务器IP地址直接访问站点内容,则存在域名未强制绑定、SSL信息泄露或恶意解析风险。以下是通过配置空主机头(即默认虚拟主机)实现禁止IP直接访问的多种方法:
一、创建默认静态站点并设为默认主机
该方法通过建立一个无实际用途的“兜底”站点,使所有未匹配域名的请求(包括纯IP访问)均被导向此站点,再配合返回错误码阻断访问。
1、登录宝塔面板,在左侧菜单点击“网站”,然后点击右上角“添加站点”。
2、在“域名”栏输入服务器IP地址(例如 192.168.1.100),其他字段保持默认;网站目录填写 /www/wwwroot/default。
3、提交后,在网站列表中找到该新站点,点击其右侧“设置”按钮,进入配置页。
4、点击“配置文件”选项卡,在 server { } 块内末尾插入: return 444;(Nginx专用关闭连接指令)。
5、保存配置,随后点击左上角“重载Nginx”使生效。
二、修改默认配置文件0.default.conf
该方法直接作用于Nginx全局默认虚拟主机配置,无需新建站点,适用于已存在默认配置且希望最小化变更的场景。
1、使用宝塔终端或SSH工具以root身份登录服务器。
2、执行命令进入Nginx虚拟主机配置目录:cd /www/server/panel/vhost/nginx。
3、备份原始默认配置:cp 0.default.conf 0.default.conf.bak。
4、编辑配置文件:vim 0.default.conf。
5、在 server { } 块中,将原有 server_name _; 或空行替换为:listen 80 default_server; listen 443 ssl http2 default_server;。
6、在其后添加:return 444;,保存退出。
7、在宝塔面板中点击“重载Nginx”服务。
三、使用Nginx内置变量匹配IP并拒绝
该方法不依赖默认站点结构,而是通过正则匹配请求头中的 host 字段是否为纯IP格式,精准拦截所有IP直连行为,兼容HTTP与HTTPS。
1、进入需保护的正式网站设置页,点击“配置文件”。
2、在 server { } 块顶部(location { } 之前)插入以下代码:
if ($host ~* "^\d{1,3}(\.\d{1,3}){3}$") { return 403; }
3、确认该代码未被注释,且位于所有 location 块之外。
4、若网站启用SSL,需确保该规则同时存在于 server { listen 443 ssl; } 块中。
5、保存配置,点击“重载Nginx”。
四、配置带无效证书的默认HTTPS监听
该方法专用于彻底阻断HTTPS下的IP直连,防止SSL证书信息暴露真实IP及域名,利用Cloudflare公共证书规避自签名警告。
1、在宝塔“网站”中新建一个默认站点,域名可填任意占位符(如 default.com)。
2、点击该站点“设置”→“SSL”,选择“其他证书”,粘贴Cloudflare Origin ECC证书及密钥(含 BEGIN/END 标记)。
3、返回“配置文件”,将 server_name 行改为 server_name default.com;,并在其后添加:return 444;。
4、确保该 server { } 块包含两行监听:listen 80 default_server; 和 listen 443 ssl http2 default_server;。
5、保存后重载Nginx服务。
五、通过安全模块屏蔽全部非域名请求
该方法借助宝塔内置防火墙机制,在网络层统一拦截非法 host 请求,无需修改Nginx配置,适合对配置操作敏感的运维环境。
1、登录宝塔面板,点击左侧“安全”菜单,进入防火墙管理页。
2、点击右上角“添加规则”,类型选择“访问限制”。
3、在“规则名称”中填写“禁止IP直连”,在“条件”栏输入:host !~ ^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$。
4、动作选择“拒绝”,状态码填写 403。
5、点击“确定”保存规则,防火墙将自动应用至所有网站入口。










