我在群里请教涛叔,怎么在zz.ac这个公益主机部署多个服务?他回答:
理论上大家可以把多个子域名解析到 vps 上,都会转发到各自的 8080 端口。大家再根据 host 分流
一时没有想明白怎么处理,直到今天晚上得到NaN 🍃点拨:
你把别的服务的子域名解析到vps上 反代监听8080端口 在根据这个服务的子域名分流 反代到这个服务的端口上就行了
其实我之所以一直没有这么处理,是因为我自己在给了自己一个错误的暗示:
这个公益主机是特殊的主机,系统给我分配了一个固定的域名。没有公网IP, 没有办法再设置子域名。
忽然想起在申请vps的时候设置cname的时候有说明:
你得给 lab.example.zz.ac 同时添加 IPv4 和 IPv6 记录,指向 h1.lab.zz.ac 这台主机。
最简单的办法是使用 CNAME 记录:
1
| lab 5m CNAME h1.lab.zz.ac.
|
当然也可以自行指定 A/AAAA 记录:
1
2
| lab 5m A 146.235.195.242
lab 5m AAAA 2603:c024:c00c:9800:911a:29ef:738b:c2a6
|
也就是说可以设置别的子域名指向下面CANME或者IP,就可以了
1
2
3
| CNAME h1.lab.zz.ac.
A 146.235.195.242
AAAA 2603:c024:c00c:9800:911a:29ef:738b:c2a6
|
瞬间这个困惑就解决掉了。这和我在别的VPS上 设置多个域名,用caddy反代多个服务一样啊!
😄😄😄😄😄😄😄😄😄
于是马上实践:
- 我的博客静态文件用blog.bosh.zz.ac访问
- alist服务用file.bosh.zz.ac访问
建立caddy 服务:在根目录下建立Cddyfile文件,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # 1. 博客静态站 (静态文件)
http://blog.bosh.zz.ac:8080 {
# 必须是容器内路径
root * /usr/share/caddy
# 开启静态文件服务
file_server
# 开启日志方便调试
log {
output stdout
}
}
# 2. 应用服务 (反向代理)
# ----------------------------
http://file.bosh.zz.ac:8080 {
reverse_proxy 127.0.0.1:5244
}
|
用podman安装caddy
1
| podman run -d --name my-caddy --network host --restart always -v /home/bosh/Caddyfile:/etc/caddy/Caddyfile -v /home/bosh/blog/public_html:/usr/share/caddy docker.io/caddy:alpine
|
用podman安装alist
1
| podman run -d --restart=unless-stopped -v /home/bosh/alist:/opt/alist/data -p 5244:5244 --network slirp4netns -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" docker.io/alist666/alist:latest
|
安装完毕,在浏览器打开网址验证:
- 我的博客:blog.bosh.zz.ac,访问正常
- alist服务:file.bosh.zz.ac,访问正常
设置caddy 和alist 为用户系统服务,后台运行,系统重启自动运行:
1
2
3
4
5
6
7
8
| # 创建用户级 Systemd 目录
mkdir -p ~/.config/systemd/user/
cd ~/.config/systemd/user/
# 生成服务文件(--new 表示容器意外停止时会自动重新创建)
podman generate systemd --name my-caddy --new --files --name
podman generate systemd --name alist --new --files --name
systemctl --user enable --now container-my-caddy.service
systemctl --user enable --now container-alist.service
|
至此大功告成

😸💃😪