Contents
caddy2的基本用法
安装caddy2,可以参考我的另一篇文章。
#caddy2测试:
caddy run -config Caddyfile.conf --adapter caddyfile
#caddy2运行:
caddy start -config Caddyfile.conf
#从 Caddyfile 生成 JSON 配置
caddy adapt --config ./Caddyfile.conf --pretty
# 整理一下配置文件格式,覆盖原文件
caddy fmt --overwrite Caddyfile.conf
Caddy2的设定文件
为了windows打开方便,设定文件命名为Caddyfile.conf。
如果放在另一台机器上,可以更改127.0.0.1为需要的IP。
https://www.yumenaka.net {
# {uri} 是一种占位符,相当于{http.request.uri}。
redir https://www.yumenaka.net{uri}
}
# 在后台里面,设置站点名为https://www.yumenaka.net
#万一进不去的话,可以手动修改wp_options表的siteurl、home 项
https://www.yumenaka.net {
reverse_proxy 127.0.0.1:1080 {
# # 请求头Host设置
header_up Host {host} # {http.request.host}
header_up X-Real-IP {remote} # {http.request.remote}
header_up X-Forwarded-For {remote} # {http.request.remote}
header_up X-Forwarded-Port {http.request.remote.port}
header_up X-Forwarded-Proto "https" # "http" or "https"
header_down Set-Cookie 127.0.0.1 www.yumenaka.net
}
}
解说
和Caddy1不同,Caddy2反代需要手动设定请求头。比如X-Forwarded-For、X-Forwarded-Proto等等。分别用来传递客户端地址,以及客户端请求协议。
根据火狐文档
X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,被用来获取最初发起请求的客户端的IP地址。
X-Forwarded-Proto (XFP) 是一个事实上的标准首部,用来确定客户端与代理服务器或者负载均衡服务器之间的连接所采用的传输协议(HTTP 或 HTTPS)。在服务器的访问日志中记录的是负载均衡服务器与服务器之间的连接所使用的传输协议,而非客户端与负载均衡服务器之间所使用的协议。为了确定客户端与负载均衡服务器之间所使用的协议, X-Forwarded-Proto 就派上了用场。
参考资料:
- Caddy 2 使用 Caddyfile 部署博客网站
- 用Caddy2反向代理地下城世界
- Caddyfile Concepts — Caddy Documentation
- caddytest
- “Nginx + FRP + Caddy2” 实现自动化小绿锁内网穿透
不要复制粘贴,否则后期排错很麻烦。随着Caddy2版本更新,一些选项可能会被停用。
比如{server_port},后来改成了{remote_port}。
看其他人的配置,header_up X-Forwarded-Proto,用{http.request.scheme}就没问题。
但我的博客在另一台机器上,并用wireguard组建了内网。这么做CSS资源无法加载,于是手动指定了https。
文章评论