简述 Link to heading
这里假设我有一个域名 example.com,那么当我部署好了 qBittorrent 与 Plex 时,我需要通过 [domain]:[port] 来进行访问,需要记住各个程序对应的端口,因此很不方便。
起初,我尝试通过 example.com/plex 来实现访问 example.com:32400,但是实际操作起来碰到了困难,按照 ChatGPT 给出的代码改写 Caddyfile,但是实际上却无法访问 example.com/plex。
后面,我转变思路,准备通过子域名来实现这一点,即 plex.example.com 来实现访问 example.com:32400。
caddy 反向代理 Link to heading
通过 plex.example.com 来实现访问 example.com:32400 实现起来就比较方便了,只需要在 Caddyfile 中添加如下内容:
plex.example.com {
reverse_proxy example.com:32400
}
对于 qBittorrent 的 webui,也是一样的,添加 reverse_proxy 使得访问 qbit.example.com 即可访问 qBittorrent 的 webui。
注意,reverse_proxy 的默认反向代理是 http 的,如果要设置为 https,那么需要设置为
reverse_proxy example.com:<port>。
完整的配置文件 Link to heading
将域名替换成自己的域名即可,但是不知道是不是 forwardproxy 还是 caddy-trojan 插件的问题,caddy 第一次运行时,内存占用会异常地高,重启之后会降下来,推测可能与一开始轮询申请证书有关?
{
order trojan before file_server
servers :4443 {
listener_wrappers {
trojan
}
}
log {
output file /var/log/caddy/default.log {
roll_size 10MiB
}
}
trojan {
caddy
no_proxy
users user tro_password
}
}
tro.arm-br.example.com {
reverse_proxy https://tro-arm-br.example.com:4443
}
naive.arm-br.example.com {
reverse_proxy https://arm-br.example.com:443
}
plex.arm-br.example.com {
reverse_proxy arm-br.example.com:32400
}
qbit.arm-br.example.com {
reverse_proxy arm-br.example.com:28080
}
cd2.arm-br.example.com {
reverse_proxy arm-br.example.com:19798
}
status.arm-br.example.com {
reverse_proxy arm-br.example.com:10182
}
:443, arm-br.example.com {
tls [email protected]
route {
forward_proxy {
basic_auth user naive_password
hide_ip
hide_via
probe_resistance
}
file_server {
root /usr/share/caddy
}
}
}
:4443, tro-arm-br.example.com {
tls [email protected]
route {
trojan {
connect_method
websocket
}
file_server {
root /usr/share/caddy
}
}
}
:6443, arm-brv6.example.com {
tls [email protected]
route {
forward_proxy {
basic_auth user naive_password
hide_ip
hide_via
probe_resistance
}
file_server {
root /usr/share/caddy
}
}
}
Caddy 的小知识 Link to heading
Caddy 官方提供的安装脚本如下:
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 会通过 systemd 进行管理,caddy.service 位于 /etc/systemd/system/multi-user.target.wants 目录下,当执行 sudo systemctl restart caddy 时,实际上这个 caddy 进程是属于一个名为 caddy 的用户的,因此配置 caddy 时要考虑到文件访问权限的问题。例如 file_server 的 root 对应的目录如果是 /home/zwyyy/webpage,就可能出现问题。
这样安装的 caddy,其使用的默认配置文件为 /etc/caddy/Caddyfile,申请的证书位于 /var/lib/caddy/.local/share/caddy/certificates 目录。
对 1G RAM 甚至更小的机器,推荐添加 1G 左右的 swap space。