宝塔中填*.example.com无效是因为dns未解析到服务器ip,且需在宝塔添加对应泛解析站点并确保根目录存在;通配符ssl需手动申请或改用多域名ssl;子域访问502说明后端服务异常。

宝塔里填 *.example.com 为什么没用?
因为宝塔本身不处理 DNS,*.example.com 在面板里只是告诉 Nginx “接收所有匹配的子域请求”,不是自动建站也不是自动解析。你必须先在阿里云、腾讯云等 DNS 控制台添加一条 A 记录:* → 你的服务器公网IP。否则访问 test.example.com 根本发不到你的服务器,自然 404 或连接超时。
常见错误现象:DNS 没配,却在宝塔「网站」页反复点“泛解析”按钮;或者配了 DNS,但宝塔里没加任何站点,导致请求到达后由 Nginx 默认 server 块响应(通常是宝塔欢迎页或 404)。
- 用
dig test.example.com +short确认是否返回你的服务器 IP - 宝塔中必须至少添加一个站点,域名栏直接填
*.example.com(不要带http://,不要空格) - 该站点根目录必须存在且 Nginx 可读,否则所有子域访问都报
500 Internal Server Error
通配符 SSL 证书能不能直接覆盖 *.example.com?
不能。Let’s Encrypt 不签纯 *.example.com 这种泛域名证书——它只支持 *.example.com 形式的通配符,但申请时必须用 DNS-01 验证,而宝塔内置的 Let’s Encrypt 申请器只走 HTTP-01,不支持自动写 DNS 记录。所以你在宝塔点「申请 SSL」→「通配符」,大概率失败或被忽略。
真实可行路径只有两条:
- 手动申请
*.example.com证书(用 acme.sh + DNS API),再上传 PEM 文件到宝塔,并在配置文件中指定ssl_certificate和ssl_certificate_key - 改用「多域名 SSL」:在宝塔 SSL 页点下拉箭头 →「多域名 SSL」→ 一次性填入
example.com,www.example.com,api.example.com,shop.example.com等所有确定要用的子域(最多 100 个),让 Let’s Encrypt 把它们全放进 SAN 列表
注意:填 *.example.com 到多域名框里是无效的,会被忽略。
怎么让所有子域都落到同一个默认站点?
靠 Nginx 的 server_name 匹配顺序。宝塔默认把精确域名(如 example.com)排在前面,*.example.com 排后面。如果你同时加了 example.com 和 *.example.com 两个站点,前者会拦截全部请求,后者永远不生效。
实操建议:
- 删掉
example.com站点(或停用),只留一个填了*.example.com的站点作为兜底入口 - 确保这个站点的配置文件(如
/www/server/panel/vhost/nginx/*.example.com.conf)里有server_name *.example.com;,且没有其他server_name冲突行 - 如果用了 CDN 或反向代理,确认它透传了原始
Host头,否则 Nginx 收到的是 CDN 的 IP 域名,匹配不上
为什么 sub.example.com 访问返回 502 而不是 404?
说明 DNS 和 Nginx 路由都通了,请求确实进了你那个 *.example.com 站点,但后端(PHP-FPM、Node.js、Python 进程等)没响应。这时候别查 DNS 或宝塔绑定,要盯应用层。
排查重点:
- 运行
systemctl status php-fpm(或对应版本如php74-fpm),看状态是不是 active (running) - 检查该站点设置里的「PHP 版本」是否和实际运行的服务一致;不一致会导致 socket 连接失败
- 看错误日志:
/www/wwwlogs/*.example.com.error.log,里面通常有connect() to unix:/tmp/php-cgi-.sock failed这类明确线索 - 如果是静态资源(HTML/CSS/JS),502 几乎不可能出现——那一定是后端服务启了但崩了,或端口/套接字路径写错了
泛解析本身没魔法,它只是把流量引过来;真正决定能否打开页面的,是你在这个兜底站点里写的路由规则、重写逻辑或应用代码。这点最容易被当成配置问题反复折腾。










