两个月前,Caddy更新了v2版本,相比v1版本,其主要特点是:
- localhost也能自动获取HTTPS
- 支持HTTP/3(
还没有一个浏览器的稳定版支持 - 支持Zstandard压缩算法(
同样还没有一个浏览器的稳定版支持 - 更复杂的Caddyfile配置
虽然早就想更新到新版本,但折腾了两次V2Ray都不work,遂一直没有升级。今天发现V2Ray的新白话文指南中给出了Caddy v2的配置方法,故趁热打铁把服务升级至新版本。
我使用Caddy主要是两个功能,静态网站托管与端口反向代理,这里主要介绍两项功能在v1和v2中的区别。
-
静态网站托管
借助static file server实现,v1版本中只需要一行:
root /path/to/root
v2版本中需要更改为:
root * /var/www/blog file_server
-
反向代理
对与HTTP代理,v1版本中依然只需要一行:
proxy /path 127.0.0.1:8000
但使用WS代理时需要特别说明:
proxy /path 127.0.0.1:8000 { websocket }
而v2版本的reverse_proxy默认支持WS代理,这里给出一个通用的反向代理模板:
reverse_proxy localhost:8000 { header_up Host {http.reverse_proxy.upstream.hostport} header_up X-Real-IP {http.request.remote} header_up X-Forwarded-For {http.request.remote} header_up X-Forwarded-Port {http.request.port} header_up X-Forwarded-Proto {http.request.scheme} }
此外,v2提供Named matchers来对反向代理提供更加详细的设定,比如V2Ray白话文教程中提供给的样例:
@v2ray_websocket { path /ray header Connection *Upgrade* header Upgrade websocket } reverse_proxy @v2ray_websocket localhost:10000
-
压缩编码
v1中:
gzip
v2中需使用encode命令,顺带把Zstandard压缩开启,相比gzip,zstd的压缩率和速度均更强,万一哪天浏览器支持了呢:
encode gzip zstd
-
HTTP/3
需要在Caddyfile中写入:
experimental_http3
-
自启动
Caddy提供了官方的service文件,下载覆盖即可。
以上基本就是我从Caddy v1迁移至v2使用的全部了,升级过后并没有什么新特性可用,使用体验也没有任何改善,但至少,短时间内应该不用瞎折腾了吧。