caddy反向代理配置实例

它是什么Caddy 是用 Go 编写的多平台 Web 服务器与反向代理服务器,通过 Caddyfile 一行级配置即可把请求转发到上游,并自动从 Let's Encrypt 获取与续期证书,省去 Certbot 与 ACME 的额外维护,适合中小型生产部署

Caddy 是用 Go 编写的多平台 Web 服务器与反向代理服务器,通过 Caddyfile 一行级配置即可把请求转发到上游,并自动从 Let's Encrypt 获取与续期证书,省去 Certbot 与 ACME 的额外维护,适合中小型生产部署。

👤
作者:谢林峰 | 更新:2026-10-04
软件信息
更新 2026-10-04

详细介绍

简介

Caddy 是用 Go 编写的快速、可扩展的多平台 Web 服务器,既是 HTTP 静态文件服务器,也是反向代理服务器。它要解决的问题很直接:把对外暴露的域名请求转发到本机或内网的上游服务,同时自动完成 HTTPS 证书的获取与续期。对于要把 Go 语言 API、php-fpm、容器内应用或自建服务暴露到公网的开发者与运维人员,Caddy 的 Caddyfile 语法与默认自动 HTTPS 能省掉 Certbot 与 ACME 的一层维护负担,对中小型部署是更实际的选择。

核心功能

  • 反向代理:使用 reverse_proxy 指令把网络请求转发到上游,官方说明该指令标准即附带多个动态上游模块。
  • 自动 HTTPS:把域名指向服务器并写入 Caddyfile 后,Caddy 会从 Let's Encrypt 获取证书并自动续期,不需要 resolver 配置,也不需要 ACME 设置。
  • 三档配置方式:Caddyfile 负责易用配置,原生 JSON 配置负责复杂场景,JSON API 支持动态配置,另有配置适配器可供转换。
  • 多协议支持:覆盖 HTTP/1.1、HTTP/2、HTTP/3,可直接对外提供现代协议服务。
  • 跨平台:Go 编写,涵盖 Linux、Windows、macOS 等多个平台,属于多平台 Web 服务器。
  • 可扩展插件:社区有 caddy-grpc 这类项目为 Caddy 添加反向代理插件,也可自行编译加入所需模块。
  • 静态文件与反向代理一体:同一进程既能托管静态文件,也能把请求转发给 php-fpm 等后端。

使用场景

  • 把 Go 语言编写的 API 通过反向代理方式暴露给调用者,请求经 Caddy 转发到上游服务。
  • 用 Caddy 代替 Nginx 代理 php-fpm,一行配置即可完成转发,省去繁杂的转发规则。
  • 容器化部署:在 Azure 拷斗容器中创建 Caddyfile,配置指向 5000/TCP 上监听的应用程序容器,并启用自动 HTTPS。
  • 自建服务对外暴露:如 GoToSocial,把 bind-address 设为 localhost,让后端只接受回环地址访问。
  • 反向代理维基百科中文站点,满足无代理环境下的访问需求,也方便把站点分享给他人。
  • 替代 Nginx 承担 443 端口监听、按主机名分发请求的职责,把流量转发到 VPS 上正确的服务。

安装与获取步骤

  1. 确认具备基本的终端/命令行技能,并确认 PATH 变量支持 caddy,可在终端中直接调用该命令。
  2. 准备一个正在运行的后端服务,记下它监听的地址与端口,例如容器内应用监听的 5000/TCP。
  3. 创建名为 Caddyfile 的文件,写入要对外提供的域名,并用 reverse_proxy 指令指向后端地址;代理 php-fpm 时按一行配置的写法填写。
  4. 把域名解析指向运行 Caddy 的服务器。配置引用的是域名而不是 IP,域名是自动 HTTPS 的前提。
  5. 启动 Caddy,它会自动向 Let's Encrypt 申请证书并负责后续续期,无需额外的 ACME 配置。
  6. 需要源码或插件时,从 github.com/caddyserver/caddy 获取项目;需要反向代理插件可参考 github.com/yhyddr/caddy-grpc,或使用插件作者提供的 Docker Image。

与同类方案的区别

  • Nginx、Caddy 与 Traefik 做的是同一件事:监听 443 端口,读取每个请求中的主机名,把请求转发到 VPS 上正确的服务,三者都能完成自动 HTTPS。
  • Caddy 除域名外基本不需要配置:写好 Caddyfile 即可签发与续期证书,不需要 resolver 配置,也不需要 ACME 设置;Nginx 强大但设定繁琐,Certbot 是额外一层维护负担。
  • Caddy 的文档以例子为主,即使是有经验的使用者也常靠示例对照写法;Nginx 与 Traefik 的资料积累更久,迁移时可对照既有规则逐条改写。
  • Caddy 目前最大的短板是没有内置的反向代理缓存,需要自行添加第三方插件并编译,或直接使用插件作者提供的 Docker Image。
  • 社区也在讨论新进入者,例如 Ferron 被介绍为 Nginx/Caddy 的替代品,但读者关心的基准对比数据在素材中没有给出,以官方页面为准。

注意事项

  • 反向代理配置中应引用域名而不是地址;引用域名才能配合自动 HTTPS 完成证书签发,容器场景下同样指向后端的 5000/TCP 端口。
  • 使用动态上游模块会对负载均衡和健康检查产生影响,选型前需要评估后端拓扑是否匹配。
  • 若反向代理与后端运行在同一台机器,建议把 bind-address 设为 localhost,使后端只通过回环地址被访问,避免有人直接连接后端绕过代理。
  • 没有内置的反向代理缓存,需要缓存能力时必须引入第三方插件自行编译,或改用插件作者提供的 Docker Image。
  • 插件需要在构建阶段加入,自行编译会带来额外的构建与升级成本;具体模块清单与参数以官方页面为准。
  • 素材中未给出版本号、文件大小与哈希等信息,涉及具体版本与参数时请以 github.com/caddyserver/caddy 官方页面为准。

更新记录

最近更新:2026-10-04

软件参数速览

本站更新时间2026-10-04

下载

常见问题

Caddy 反向代理的最小配置要写哪些内容?

创建名为 Caddyfile 的文件,写入对外提供的域名,再用 reverse_proxy 指令指向正在运行的后端地址;把域名解析到服务器后启动 Caddy 即可,具体写法以官方 reverse_proxy 指令文档为准。

后端是 php-fpm 时该怎么配?

可以用一行配置让 Caddy 充当 php-fpm 的反向代理,思路是让 reverse_proxy 指向 php-fpm 监听的地址,实践记录见 ttys3.dev 的相关文章。

为什么配置里要写域名而不是 IP?

容器场景的官方示例提示配置引用的是域名,引用域名才能配合自动 HTTPS 完成证书签发,同时把请求转发到 5000/TCP 上监听的应用容器。

使用动态上游模块会带来什么影响?

官方文档说明 reverse_proxy 标准附带若干动态上游模块,而使用动态上游会对负载均衡和健康检查产生影响,做容量规划时需要一并考虑。

代理和后端在同一台机器上要注意什么?

GoToSocial 文档建议把 bind-address 设为 localhost,让后端只通过回环地址被访问,否则可能有人直接连接后端,绕过反向代理的访问控制。

Caddy 和 Nginx、Traefik 该怎么选?

三者都监听 443 并按主机名转发请求;Caddy 除域名外不需要 resolver 或 ACME 配置即可自动处理 HTTPS,Nginx 通常还要额外维护 Certbot 这一层。

Caddy 能做反向代理缓存吗?

目前 Caddy 最大的缺点是没有内置的反向代理缓存,需要自己加第三方插件编译,或者直接使用插件作者提供的 Docker Image。

需要 gRPC 反向代理插件怎么办?

社区有 caddy-grpc 这类项目为 Caddy 添加反向代理插件,项目地址为 github.com/yhyddr/caddy-grpc,可按其说明扩展自己的 Caddy 构建。

相关推荐

Traefik:云原生反向代理网关
本文章全面介绍Traefik云原生反向代理网关的核心价值,涵盖自动服务发现、动态路由更新、Let's Encrypt自动HTTPS、中间件流量治理等特性,并给出基于Docker的安装配置示例与常见坑点,助你在微服务架构中轻松用好Traefik。
Caddy 绿色版
提供 Caddy Windows 版本的下载入口、版本信息与安装步骤,安装前请核对系统版本与架构。
caddy配合frp使用
caddy配合frp使用是一套把frp内网穿透与Caddy反向代理组合的部署方案:frp把内网端口暴露到公网服务器,Caddy按域名分流并自动处理HTTPS证书,适合有域名、想用统一入口管理多个内网服务的个人与小团队。
caddy插件编译安装
Caddy 官方软件包只含标准模块,需要第三方插件时要用 xcaddy 从源码构建出专属二进制文件。本页整理 xcaddy 的作用、适用场景、获取与构建步骤,以及与官方包、Docker 镜像、Nginx 方案的差别和常见坑点。
caddy服务器配置教程
Caddy 是用 Go 编写的开源 Web 服务器,支持 HTTP/2,默认启用 HTTPS。本页整理其配置方式(Caddyfile、原生 JSON、JSON API)、Debian/Ubuntu 安装命令、启动与重载流程、与 Nginx 的差异及常见问题,适合需要快速搭建反向代理与自动证书管理的运维与开发者参考。
caddy中文使用文档
Caddy 中文使用文档围绕开源 Web 服务器 Caddy 的配置写法、部署方式与 HTTPS 证书管理展开,覆盖 Caddyfile、原生 JSON 配置、JSON API 动态管理、多平台获取途径与第三方插件构建,适合运维人员和开发者快速上手。