宝塔面板怎么配置泛域名
照着做完,你就能让 任意前缀.你的域名 全部指向同一台服务器,并且按子域名自动分流到不同目录或同一个项目。下面以宝塔面板 8.x(Linux 版)+ Nginx 为例,从域名解析一直做到通配符 HTTPS 证书。
第一步:在 DNS 服务商处加一条泛解析记录
这一步的目标是让 *.example.com 这类域名在公网上能解析到你的服务器 IP。登录你买域名的地方(阿里云云解析、腾讯云 DNSPod、Cloudflare 都行),进入该域名的「解析设置」,添加两条记录:
- 记录类型
A,主机记录*,记录值填服务器公网 IP,TTL 用默认(600 秒) - 记录类型
A,主机记录@,记录值同样是服务器公网 IP
加完后在本地终端执行 ping abc.example.com,能返回你的服务器 IP 就说明泛解析已生效。
注意:
*.example.com只匹配一级子域名,不匹配example.com本身,也不匹配a.b.example.com,所以@那条必须单独加。
第二步:在宝塔面板新建站点并填写泛域名
这一步的目标是让 Nginx 愿意接收所有子域名的请求。登录宝塔面板,左侧菜单点「网站」→ 顶部「添加站点」,在「域名」输入框里填两行:
example.com
*.example.com
数据库、PHP 版本按需选,根目录默认 /www/wwwroot/example.com 即可,点「提交」。创建完成后,在「网站」列表点该站点右侧「设置」→「配置文件」,你能看到 server_name example.com *.example.com; 这一行,说明配置已写入。
第三步:验证所有子域名都能打开
在浏览器里分别访问 example.com、www.example.com、abc.example.com,应该都能看到同一个默认页。如果只有主域名能开、子域名报 404 或连接被拒,先检查第一步的 * 记录是否生效,再执行 nginx -t 确认配置语法没问题。
第四步:让每个子域名指向不同目录(可选)
如果你想让 a.example.com 读 /www/wwwroot/example.com/a、b.example.com 读 .../b,还是进入「网站」→ 站点「设置」→「配置文件」,把 root 那行替换成下面这段并保存:
server_name example.com *.example.com;
set $sub '';
if ($host ~* "^([^.]+)\.example\.com$") {
set $sub $1;
}
root /www/wwwroot/example.com/$sub;
保存后点「设置」里的「重载配置」。在根目录下建 a、b 两个文件夹并各放一个 index.html,访问对应子域名就能看到不同内容。
注意:宝塔面板里的「网站设置」界面每次保存都会重新生成配置文件,可能覆盖你手写的
if和root。手改后尽量不要再通过界面改这个站点的基本设置。
第五步:申请通配符 SSL 证书
这一步决定 *.example.com 能不能走 HTTPS,也是新手最容易卡住的地方:免费证书只能用 DNS 验证方式申请。在站点「设置」→「SSL」标签页,选「Let's Encrypt」,验证方式选「DNS验证」,勾选「自动组合泛域名」,然后在下方选你的 DNS 服务商(阿里云、DNSPod、Cloudflare 等),填入对应的 API 密钥,点「申请」。
密钥获取位置举例:阿里云在「AccessKey 管理」生成 AccessKey ID 和 Secret;Cloudflare 在「My Profile → API Tokens」创建带 Zone.DNS 编辑权限的 Token。申请成功后打开右上角「强制 HTTPS」开关。
注意:不要用「文件验证」申请泛域名,Let's Encrypt 不支持通过 HTTP 文件验证签发通配符证书,会直接报错。
小结
- 泛解析在 DNS 服务商处加
*和@两条 A 记录,指向同一 IP - 宝塔添加站点时域名填
example.com和*.example.com两行 - 子域名分流目录靠 Nginx 里的
$host变量提取前缀,改完记得重载配置 - 泛域名证书必须走 DNS 验证,需要 DNS 服务商的 API 密钥
*只匹配一级子域名,多级域名要单独加记录
原文链接:https://www.gj0.com/thread-963.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。