正在加载…

Post cover image

Caddy 替换 Nginx

2025年10月13日 • share

676 字-

听说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

远山

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

云存储提供商
热门标签
WiFi6
E2633
Mesh
caddy
acme
群辉
RSA
非对称加密
AES
对称加密
Docker
Umami
数据分析
云存储
CDN
七牛云
EdgeOne
S3
本地服务器
Artalk
图床
upgit
静态博客
Valaxy