Nginx 是一款轻量级的 Web 服务器、反向代理服务器,占用内存少、启动快、高并发能力强、配置简单,被广泛应用。OPNsense 也集成了 Nginx 插件,通过设置 Nginx 反代,既可以保护内部 Web 服务器,也可以实现服务器的负载平衡。
下面以访问内部 alist 服务器(IP 地址:192.168.101.15,HTTP 访问端口:5244)为例,介绍 Nginx 反代的配置过程。
在配置 Nginx 之前,可以参照 OPNsense 配置 CloudFlare 动态域名,使用 Let’s Encrypt 证书实现 SSL 安全访问 设置动态域名和 ACME 证书。
安装插件
导航到 OPNsense 防火墙 系统 > 固件 > 插件 菜单,搜索 os-nginx 并安装。
配置步骤
Nginx 反代设置主要包含五个方面的配置:
- 上游服务器:托管网页/应用程序的真实内部服务器;
- 上游:配置服务器的后端(池);
- 位置:配置上游功能的网址格式;
- HTTP 服务器:配置一个或多个位置的前端;
- 添加防火墙规则,放行反代使用的端口。
添加上游服务器
导航到 服务 > Nginx > 配置 > 上游 选项卡,点击 上游服务器,添加内部 Alist 服务器。

输入 Alist 服务器的访问 IP 和端口,因为只有一个服务器,所以优先级设为 1。服务器参数设置取决于 Web 服务器/应用程序以及网络环境,为了获得更好的保护,建议在 “最大连接数/失败次数” 和 “失败超时” 中设置一些限制。配置完成后如下:

添加上游(池)
接下来配置上游。单击 上游 菜单,添加一个新的上游。上游服务器选上一步建立的服务器,启用 TLS 不选,其他选项保持默认即可。

配置完成后如下图所示:

Naxsi(WAF)规则
Naxsi 是第三方 Nginx 模块,可作为许多类 UNIX 平台的软件包使用,可以一定程度上提升访问的安全性。在进行配置之前,我们需要下载 Naxsi 规则策略,并在后面的位置配置中启用该规则。转到 HTTP(S) > Naxsi WAF 策略 子菜单,单击右上的下载按钮获取 NAXSI 规则,接受 NAXSI 存储库许可证,下载 NAXSI 策略和规则。
下载完成后如下图所示:


添加位置
导航到 HTTP(S) > 位置,单击右下角添加按钮添加一个新位置。输入一个描述说明,网址格式要与服务器根目录匹配,这里用 / 填充。要与另一个路径匹配,请将其更改为 /anotherpath/;选中启用安全规则,上游服务器选中前面设置的上游,选中强制 HTTPS 选项。

其他选项根据需要设置或保持默认,配置完成以后如下图所示:

添加 HTTP 服务器
单击 HTTP(S) 选项卡,找到 HTTP 服务器 菜单,添加一个 HTTP 服务器。由于不需要通过 HTTP 端口访问,这里的 HTTP 监听地址可以留空。输入 HTTPS 监听端口、服务器名称,位置选中上一步设置的位置,TLS 证书和 CA 选中之前用 LE 申请的证书和 CA;选中启用 LE 插件支持,选中仅 HTTPS。其他选项保持默认。

配置完成以后如下图所示:

启用 Nginx
返回菜单 服务 > Nginx:选中启用选项,单击应用按钮启动 Nginx 服务。

添加防火墙规则
创建所需的防火墙规则,放行 HTTP 服务器所使用的端口(例如 10443)。导航到 防火墙 > 规则 > WAN 选项卡,添加放行 10443 端口的规则,如下图所示:

至此,配置全部完成!
检查测试
手机关闭 WiFi,浏览器输入 https://域名+端口号 访问内部 Alist 服务器,测试是否能正常访问,如下图所示:

如果访问不了,可以根据 Nginx 的日志找出问题原因,并针对性进行解决。
转到 服务 > Nginx > 流量统计,可以查看 Nginx 的实时统计信息。

其他问题
可以在 ACME 插件里添加一个自动操作,在证书更新后,自动重启 Nginx 服务。
导航到 服务 > ACME 客户端 > 自动操作,添加一个自动操作命令:

然后转到 服务 > ACME 客户端 > 证书,证书选项卡,点击所使用证书右侧的编辑图标,在自动操作选项里,添加前面设置的自动操作命令,保存即可。以后只要更新了证书,系统将自动重启 Nginx 服务。

觉得内容不错?我要