简介
Caddy是一个现代化的开源web服务器,以其易用性和强大的自动化功能而著称。Caddy可以自动处理 SSL/TLS 证书,集成 Let’s Encrypt,简化HTTPS 设置过程。得益于Go 语言的跨平台特性,Caddy可以在 Windows、Linux、MacOS、FreeBSD等平台上使用。Caddy 支持最新的 HTTP/3 协议,能保证更快的网页加载速度。相较于其他服务器,如Nginx和Apache,Caddy提供了更简单的配置方式,新手也能快速上手。
本文以从外部访问内部alist服务器为例,介绍在OPNsense上使用Caddy配置反向代理的方法。所使用的防火墙软件版本为OPNsense 24.7.6,为简化文章内容,在配置反向代理之前,确保已经配置好了域名和SSL证书。
由于Caddy默认代理的80和443端口在国内无法使用,本文使用8088和8443端口进行替换。本教程演示的内部alist服务器地址192.168.101.15,访问端口5244。
安装Caddy
导航到系统>固件>插件,找到os-caddy并进行安装。

添加规则
通过8088和8443代理,需要放行WAN接口的8080、8443端口。转到防火墙>规则>WAN,添加两条放行8088和8443端口规则。

配置Caddy
1、常规设置
转到服务>Caddy>常规设置,高级设置选项卡,将http和https端口分别修改为8088和8443并保存。

2、添加域
转到服务>Caddy>反向代理,域选项卡,点击右下角添加按钮,添加一个域名。协议选https://,域输入OPNsense配置CloudFlare动态域名,端口输入8443,证书选ACME申请的SSL证书,其他选项默认。

配置完成后如下图所示:

3、添加HTTP处理程序(内部服务器)
转到http处理程序选项卡,点击右下角添加按钮,添加一个HTTP处理程序(alist服务器)。域选前面设置的域名,指令选reverse_proxy。

上游域输入alist的服务器地址192.168.101.15,端口输入alist的访问端口5244,其他选项保持默认即可。

配置完成后如下图所示:

4、启用Caddy服务
转到服务>Caddy>常规设置,选中启用并点击应用,启动Caddy服务。由于证书是通过ACME客户端申请的,该页面的ACME邮箱可以不填,自动HTTPS也可以关闭。

测试设置
转到服务>Caddy>诊断,点击右下角验证Caddyfile按钮,检查配置文件是否正确。

如果配置文件有效,继续测试在外部是否能使用“域名+端口”访问内部的alist服务器。
其他
同步测试了NAS和ESXI的设置,只需要调整处理程序协议为https,并勾选跳过验证即可正常访问。

添加评论