群晖反向代理服务强制HTTPS访问

Kxhubs Svip1

前言

因运营商公网封禁80,443端口。
群晖部署证书后,开启重定向。在反向代理中无法使用标准端口,只能使用非标准端口。
日常访问中浏览器需要输入完整的网址例如https://xxx.com:port/
如果只输入网址加端口如xxx.com:port,浏览器默认是访问http而不是https,所以本文提供一种方案可以实现http自动跳转https,免去每次都要输入完整网址的烦恼。

环境

  • NAS:威联通453DMini
  • 系统版本: DSM 7.1.1-42962

设置反向代理

DSM 7

进入控制面板→登录门户→高级→反向代理服务器

DSM 6

进入控制面板→应用程序门户→反向代理服务器


来源端口设置从公网访问的端口。域名填写自己的域名,目的地填写自己想代理出的服务
注意,如果是DSM7以下的,打开启用HSTS和启动HTTP/2,DSM7打开HSTS就可以了。
选中顶栏中的第二个自定义标题,点击新增,WebSocket,完成后保存即可

修改群晖nginx配置模板

用xshell或者其他自己熟悉的shell工具连接群晖,运行cd /usr/syno/share/nginx/,该目录下就是nginx的模板文件。Portal.mustache就是我们要修改的文件。
运行sudo vi Portal.mustache,修改模板文件,在location之前添加模板,这里用到了nginx的error_page 497进行重定向,上下两个括弧是模板语言,大概意思就是当括弧里的https.hsts的值为true时,就渲染中间那行的代码,所以刚才添加反向代理规则时要把这个参数勾上,这里可以用到。
pPyakCT.png

重启服务

DSM6

1
sudo synoservicecfg --restart nginx

DSM7

1
sudo systemctl restart nginx

修改完模板后,重启nginx服务,重启之后,执行cd /etc/nginx/app.d/,生成的配置文件server.ReverseProxy.conf就在该目录下
查看该文件,可以看到对于开启了https的4430端口,已经添加了重定向规则,而我设置的另一个作为测试的未开启https的4431端口,则不会添加重定向规则,这样就保证有https的服务都能自动跳转https,不支持https的服务则不受影响。
pPyaQ56.jpg

  • Title: 群晖反向代理服务强制HTTPS访问
  • Author: Kxhubs
  • Created at : 2023-09-07 17:13:32
  • Updated at : 2023-10-08 13:19:50
  • Link: https://blog.kxhubs.com/2023/09/07/群晖反向代理服务强制HTTPS访问/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
群晖反向代理服务强制HTTPS访问