反向代理与 HTTPS 配置指南
通过反向代理(Reverse Proxy),你可以用一个端口(443)访问 NAS 上的所有服务,无需在路由器上映射几十个端口,配合 HTTPS 证书,既安全又优雅。
什么是反向代理?
- 没有反向代理:访问
http://nas-ip:5000(DSM),http://nas-ip:8096(Jellyfin),http://nas-ip:8123(HA)。 - 有反向代理:访问
https://dsm.yourdomain.com,https://video.yourdomain.com,https://ha.yourdomain.com。所有流量都通过 443 端口进入,NAS 根据域名自动分发给不同的服务。
准备工作
- 域名:购买一个域名,或者使用群晖自带的
*.synology.meDDNS。 - 公网 IP:需要公网 IPv4 或 IPv6。
- 端口映射:在路由器上将外网
443端口映射到 NAS 的443端口。
步骤 1:申请泛域名证书 (Wildcard SSL)
推荐申请泛域名证书(如 *.yourdomain.com),这样增加子域名时无需重新申请证书。
- 控制面板 > 安全性 > 证书。
- 新增 > 添加新证书 > 获取证书 > Let's Encrypt。
- 域名:输入
yourdomain.com。 - 主题备用名称:输入
*.yourdomain.com(注意:群晖自带的 DDNS 自动支持泛域名,第三方域名可能需要 DNS 验证支持)。- 技巧:如果使用阿里云/腾讯云域名,建议使用
acme.sh脚本通过 Docker 自动申请并部署到群晖,比自带的更稳定。
- 技巧:如果使用阿里云/腾讯云域名,建议使用
步骤 2:配置反向代理规则
以 Jellyfin 为例(内部端口 8096):
- 控制面板 > 登录门户 > 高级 > 反向代理服务器。
- 点击 新增。
- 常规:
- 描述:Jellyfin
- 来源:
- 协议:
HTTPS - 主机名:
video.yourdomain.com - 端口:
443 - 启用 HSTS:勾选(强制 HTTPS)
- 协议:
- 目的地:
- 协议:
HTTP - 主机名:
localhost - 端口:
8096
- 协议:
- 自定义标题 (WebSocket 支持):
- 很多应用(Jellyfin, Home Assistant, Bitwarden)需要 WebSocket 支持,否则会报错或无法连接。
- 点击 自定义标题 选项卡。
- 点击 新增 > WebSocket。系统会自动添加
Upgrade和Connection两个头。
- 点击 保存。
步骤 3:证书分配
创建完规则后,默认使用的是系统默认证书。你需要将新域名的证书分配给对应的反向代理规则。
- 回到 控制面板 > 安全性 > 证书。
- 点击 设置。
- 在列表中找到刚才创建的
video.yourdomain.com(服务名称通常显示为反向代理的描述)。 - 将对应的证书修改为你申请的
*.yourdomain.com证书。 - 点击 确定。
现在,访问 https://video.yourdomain.com 即可直接进入 Jellyfin,浏览器显示安全锁图标。
进阶技巧:访问控制
有些服务(如通过 Docker 搭建的管理面板)不想暴露给全网,只想在公司或特定 IP 访问。
- 控制面板 > 登录门户 > 高级 > 访问控制配置文件。
- 新增 一个策略,例如“仅限局域网”。
- 规则:允许
192.168.1.0/24,拒绝所有。 - 回到 反向代理服务器 规则编辑页面,在 访问控制配置文件 中选择刚才创建的策略。
这样,即使域名解析到了公网 IP,外网用户访问时也会显示 403 Forbidden,只有你在局域网内才能访问。