如何在已有A记录的apex域名上同时配置GitHub Pages与本地服务?
解决方法
针对你的需求,有两种可靠的方案可以实现主域名访问GitHub Pages(Homer页面),同时子域名正常访问Jellyfin:
方案1:调整DNS记录,拆分主域名与子域名解析
- 修改Jellyfin子域名的DNS记录:
- 删除原有的
CNAME: jellyfin -> domain.tk记录 - 添加新的
A记录: jellyfin.domain.tk -> 你的服务器公网IP
- 删除原有的
- 配置主域名指向GitHub Pages:
- 删除原有的
A记录: domain.tk -> 服务器公网IP - 为
domain.tk添加GitHub Pages要求的解析记录:- 若用A记录:添加GitHub Pages的官方IP(如
185.199.108.153、185.199.109.153等) - 若用CNAME记录:直接添加
CNAME: domain.tk -> user.github.io(Cloudflare支持CNAME Flattening,会自动处理 apex 域名的CNAME解析限制)
- 若用A记录:添加GitHub Pages的官方IP(如
- 删除原有的
优点
- 架构清晰,主域名和子域名解析完全独立,不依赖服务器代理
- 无需修改Caddy配置,维护成本低
方案2:通过Caddy反向代理主域名到GitHub Pages
保留现有DNS记录(主域名A记录指向服务器,子域名CNAME指向主域名),修改Caddy配置实现转发:
# 主域名转发到GitHub Pages的Homer页面 domain.tk { reverse_proxy https://user.github.io { # 必须设置Host头,否则GitHub Pages无法正确识别请求 header_up Host user.github.io } tls { cloudflare } } # 子域名正常反向代理到Jellyfin jf.domain.tk { reverse_proxy localhost:8096 tls { cloudflare } }
优点
- 无需修改任何DNS记录,快速生效
- 所有流量先经过你的服务器,可灵活添加额外的访问控制或缓存规则
注意事项
- 确保你的服务器能够正常访问
user.github.io - 若GitHub Pages启用了HTTPS,Caddy的反向代理配置中要使用
https://协议
内容的提问来源于stack exchange,提问作者OhItsTom
相关产品推荐
相关产品推荐

