正在加载…

Post cover image

Caddy 替换 Nginx

2025年10月13日 • 分享

677 字-

本文最后更新于 1 年前,文中所描述的信息可能已发生改变。

听说Caddy配置很简洁,天然支持https,这次刚买了新的服务器,打算就替换了Nginx,从零开始接触,搞定配置、反向代理和证书,一上午就过去了。使用下来很顺手,不用分别搞Nginx配置和acme定时证书了。

安装Caddy

shell
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

# 查看版本
caddy -v

# 重载配置
caddy reload

# 重启服务
systemctl restart caddy

# 常用目录
# 配置文件
/etc/caddy/Caddyfile
# 证书部署目录
/var/lib/caddy/.local/share/caddy/certificates/

caddy默认支持https,如果80端口可以使用的话,直接走的网站目录下的文件验证,只要你配置好网站域名,就自动生成证书了。

但是要是使用通配符,只能走acme质询。caddy有自己的插件可以使用,插件名称叫 dns.providers.alidns,这个是阿里云的dns解析组件,还支持腾讯的,华为的,cloudflare。从这里找:caddy-dns · GitHub

安装xcaddy

xcaddy是caddy插件的构建命令,能用命令肯定不自己去装插件了啊。安装 dns.providers.alidns 插件就使用它。

shell
# 先安装golang环境
wget https://golang.google.cn/dl/go1.25.2.linux-amd64.tar.gz

# 清理go包,重新解压
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.25.2.linux-amd64.tar.gz

# 添加go路径
vim /etc/profile
export PATH=$PATH:/usr/local/go/bin

# 生效
source /etc/profile
shell
# 安装xcaddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-xcaddy-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-xcaddy.list
sudo apt update
sudo apt install xcaddy

安装alidns插件

shell
cd /tmp
xcaddy build --with github.com/caddy-dns/alidns

# 覆盖caddy
mv /tmp/caddy /usr/bin/caddy

网站配置

最后给个简易版的网站配置,是比Nginx简介多了,终于再也不用操心证书的问题了。

shell
{
	# 全局配置块,ACME邮箱等
	email youremail@gmail.com
	acme_dns alidns {
		access_key_id "xxx"
		access_key_secret "xxx"
	}
}

# 支持多个子域名
*.yoursite.com, yoursite.com{
	# 强制 HTTPS
	@http {
		protocol http
	}
	redir @http https://{host}{uri} permanent

	# 反向代理到本地 9000
	reverse_proxy 127.0.0.1:9000 {
		# 超时配置
		transport http {
			read_buffer 8192
			response_header_timeout 60s
			dial_timeout 60s
		}

		header_up Host {host}
		header_up X-Real-IP {remote_host}
		header_up Upgrade {>Upgrade}
		header_up Connection {>Connection}
	}

	# 错误日志(Caddy统一在 journal 或 /var/log/caddy 里)
	log {
		# 可以添加其他配置,例如日志轮转
		output file /var/log/caddy/site.log {
			roll_local_time
		}
	}
}
在转载或引用本文时,请务必遵守许可协议并注明来源
远山's Avatar

远山

那远山呼唤我,曾千百次走过。

云存储提供商
热门标签
S3
Silo
MinIO
Docker
电视盒子
AI
Skills
Stitch
Google AI Studio
Trae IDE
claude code
cc-switch
nvidia api
openrouter
ai
coding plan
WiFi6
E2633
Mesh
caddy
acme
群辉
RSA
非对称加密
AES
对称加密
Umami
数据分析
云存储
CDN
七牛云
EdgeOne
本地服务器
Artalk
图床
upgit
静态博客
Valaxy