VPS常用命令
新装VPS必用命令
root用户密码登录
root用户密钥登录
VPS重装系统脚本
Oracle DD系统后获取ipv6地址
V2ray安装
x-ui安装
PVE实用命令
speedtest-cli
OpenWrt接口配置示例
利用Cloudflare Tunnel实现内网穿透
ubuntu通过netplan设置静态ip
PVE温度显示以及去除弹窗脚本
Caddy示例配置文件
hysteria2的搭建与使用
Clash Meta配置模板
VPS流量监控脚本
rclone完全备份脚本
Oracle Cloud安装Alpine Linux
Caddy-dns的配置与使用
sing-box安装与配置
通过 CF Warp 为 IPv4/6 Only VPS 添加 IPv6/4 支持
流量转发脚本
ssh配置文件
rsync传输文件
阿里云盘CLi安装
Linux 设置IPv4优先
流量监控脚本
Openwrt中使用ddns-go加Caddy实现域名访问
NAT VPS 使用 Caddy 为内部服务提供 HTTPS 访问
Docker 多平台镜像构建与推送教程(arm64 主机示例)
本文档使用 MrDoc 发布
-
+
首页
Openwrt中使用ddns-go加Caddy实现域名访问
前提条件:配置好ddns-go # 🚀 Caddy 安装与配置指南(OpenWrt + Cloudflare DNS) ## 1️⃣ 下载 Caddy 访问官网:[https://caddyserver.com/download](https://caddyserver.com/download) 根据你的 CPU 架构选择对应版本。 按需选择插件: * 如果使用 **Cloudflare DNS**,请选择 `cloudflare` 插件。 * 建议同时勾选 `caddy-cgi/v2` 插件以支持更多功能。 ### 📥 下载完成后 > 📢 特别提醒:如果你在 Cloudflare 托管域名,请选择 **cloudflare** 插件,而不是其他 DNS 插件,否则可能在证书申请时遇到验证错误。 --- ## 2️⃣ 安装与配置 ### 上传并授权 ```bash # 上传 caddy 可执行文件到 /usr/bin/ chmod +x /usr/bin/caddy ``` ### 创建配置目录和文件 ```bash mkdir -p /etc/caddy vim /etc/caddy/Caddyfile ``` --- ## ⚙️ 配置示例 ### 1. 基础配置(单站点) 以下示例展示最简反向代理配置: ```bash { http_port 667 https_port 668 email your-email@example.com acme_dns cloudflare { api_token "YOUR_CLOUDFLARE_API_TOKEN" } } blog.example.com:668 { reverse_proxy 192.168.1.100:8080 } ``` 此配置实现以下功能: * 使用 **667** 端口处理 HTTP 请求(避免运营商封锁 80) * 使用 **668** 端口处理 HTTPS 请求(避免运营商封锁 443) * 通过 **Cloudflare DNS 验证方式** 自动申请与续期 SSL 证书 * 将访问 `blog.example.com:668` 的请求反向代理到内网 `192.168.1.100:8080` > ⚠️ **重要提醒**: > > * Cloudflare 插件使用的是 **API Token**,而不是全局 API Key。 > * 建议创建一个只拥有 `Zone.DNS.Edit` 权限的 Token,以保障安全性。 > * Cloudflare Token 获取地址:[https://dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens) 📝 **端口说明:** * 端口号(667/668)可根据实际需求调整; * 确保端口未被封锁; * 配置中保持一致性。 --- ### 2. 进阶配置(多服务统一管理) Caddy 的配置语法非常优雅,适合管理多个内网服务。 以下为使用 **通配符域名** 管理多服务的示例: ```bash { http_port 667 https_port 668 email your-email@example.com acme_dns cloudflare { api_token "YOUR_CLOUDFLARE_API_TOKEN" } } *.example.com:668 { @nas host nas.example.com handle @nas { reverse_proxy http://192.168.1.100:5000 } @photos host photos.example.com handle @photos { reverse_proxy http://192.168.1.100:5001 } @cloud host cloud.example.com handle @cloud { reverse_proxy http://192.168.1.100:5002 } @media host media.example.com handle @media { reverse_proxy http://192.168.1.100:8096 } @router host router.example.com handle @router { reverse_proxy http://192.168.1.1:80 } } ``` #### 💡 配置优势: * **通配符域名支持:** * 使用 `*.example.com` 自动匹配所有子域名; * 仅需在 Cloudflare 添加一条 `*.example.com` 的 CNAME 记录; * Caddy 会自动申请并管理通配符证书。 * **优雅的多服务结构:** * 使用 `@name host domain` 定义服务匹配; * 每个服务独立配置,清晰易维护; * 支持不同内网 IP 与端口。 * **简洁的语法:** * 无需复杂 rewrite; * 自动处理 HTTPS 重定向与证书续期。 #### 🌐 DNS 配置示例(Cloudflare): | 记录类型 | 名称 | 内容 | 说明 | | ----- | --- | ------- | ------ | | AAAA | `@` | 你的公网 IP | 主域名 | | CNAME | `*` | `@` | 通配符子域名 | --- # 🧩 系统配置 ## 1️⃣ 配置自启动服务 创建并编辑启动脚本: ```bash vim /etc/init.d/caddy ``` 添加以下内容: ```bash #!/bin/sh /etc/rc.common START=99 USE_PROCD=1 start_service() { procd_open_instance procd_set_param command /usr/bin/caddy run --config /etc/caddy/Caddyfile procd_set_param respawn procd_set_param stdout 1 procd_set_param stderr 1 procd_close_instance } ``` 启用服务: ```bash chmod +x /etc/init.d/caddy /etc/init.d/caddy enable /etc/init.d/caddy start ``` --- ## 2️⃣ 配置防火墙 为了允许外部访问,需要在 OpenWrt 防火墙中开放相应端口。 ### 方式一:通过 Web 界面(推荐) 1. 登录 OpenWrt 管理界面 2. 导航至:**网络 → 防火墙 → 端口转发** 3. 添加新规则: * 名称:`Caddy-HTTPS` * 协议:`TCP` * 外部端口:`667,668` * 内部端口:`667,668` * 内部 IP 地址:`192.168.1.1` ### 方式二:通过命令行 ```bash uci add firewall rule uci set firewall.@rule[-1].name='Allow-Caddy-HTTPS' uci set firewall.@rule[-1].target='ACCEPT' uci set firewall.@rule[-1].src='wan' uci set firewall.@rule[-1].dest_port='667,668' uci set firewall.@rule[-1].proto='tcp' uci commit firewall /etc/init.d/firewall restart ``` --- # 🛠️ 使用与维护 ## 日常维护 查看服务状态: ```bash /etc/init.d/caddy status ``` 重启服务(配置修改后): ```bash /etc/init.d/caddy restart ``` --- ## 故障排查 ### 检查 Caddy 服务状态: ```bash /etc/init.d/caddy status ``` ### 查看 Caddy 运行日志: ```bash logread | grep caddy ``` 常见日志提示: | 日志信息 | 含义 | | ------------------------------ | -------- | | `failed to start` | 服务启动失败 | | `address already in use` | 端口被占用 | | `acme: error presenting token` | DNS 验证失败 | | `TLS handshake error` | SSL 证书问题 | 实时监控日志: ```bash logread -f | grep caddy ``` --- ## 其他排查要点 * ✅ 确认防火墙规则配置正确 * ✅ 验证 Cloudflare DNS 解析是否生效(可用 `nslookup` 测试) * ✅ 检查 Cloudflare API Token 权限是否正确 * ✅ 确认域名解析已经传播完成(通常几分钟到几小时) * ✅ 翻墙插件可能会使dns-challenge失效 --- 是否希望我帮你在这份 Markdown 中加上自动目录(`[TOC]`)或 GitHub 样式标题锚点?这样方便直接导入到文档或 README.md 中使用。 # 配置文件 `vim /etc/caddy/Caddyfile` ### cloudflare ```bash { # ======== 全局配置 ======== # 自定义监听端口 http_port 667 https_port 668 } (cloudflare) { tls { dns cloudflare Pdxxxxxxxxxxxxx } } # ======== 各站点配置 ======== op.365356.xyz:668 { import cloudflare reverse_proxy 10.0.0.1:80 } nas.365356.xyz:668 { import cloudflare reverse_proxy 10.0.0.141:5666 } pve.365356.xyz:668 { import cloudflare reverse_proxy 10.0.0.100:8006 { transport http { tls_insecure_skip_verify } } } ``` ### 自签证书 ```bash { # ======== 全局配置 ======== # 自定义监听端口 http_port 667 https_port 668 } # ======== 全局 TLS 模板(使用 Caddy 内置 CA 签发自签证书) ======== (selfsigned) { tls internal } # ======== 各站点配置 ======== op.365356.xyz:668 { import selfsigned reverse_proxy 10.0.0.1:80 } nas.365356.xyz:668 { import selfsigned reverse_proxy 10.0.0.141:5666 } pve.365356.xyz:668 { import selfsigned reverse_proxy 10.0.0.100:8006 { transport http { tls_insecure_skip_verify } } } ```
koalalove
2025年11月3日 23:19
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码