群晖自定义端口实现所有web服务强制https访问
前言
单看标题好像没什么好讲的,不就是https访问吗,添加ssl证书,然后在DSM设置里打开自动重定向到https就可以了。然而实际并不是这样的,我这边运营商封80和443端口,上述操作在内网是没问题的,但是到外网,通过80端口是访问不了的,即使你开了重定向,但是80端口根本访问不到,别说https了,http也访问不了。
那封了80,443要怎么访问?当然是在域名后面加端口号了,但是除了DSM的服务,你肯定还会开其他web服务,这样就要记很多端口了。而且最大的一个问题是,如果你要走https,每次都要在浏览器里输入https://xx.xx.com:port,如果直接输入域名的话,默认还是访问http。接下来就介绍一下我的方案,完成之后,对于开启了https的服务,只需要输入xx.xx.com:port就可以访问,对于port端口,我们只需要记住一个,其余服务的端口使用反向代理。
设置防火墙
首先进入控制面板→安全性在群晖中打开用于https访问的端口,由于443端口被封,不妨选择4430作为使用端口
设置反向代理
进入控制面板→应用程序门户→反向代理服务器,添加反向代理规则,刚才选择的是4430端口,这里的来源端口就填4430,域名请根据自己的设置来填写。目的地根据自己的web服务填写,以群晖默认的端口5001为例。这里注意,一定要打开HSTS以及HTTP/2,这两个选项后面会作为模板的参数使用。
修改群晖nginx配置模板
用finalshell或者其他自己熟悉的shell工具连接群晖,运行cd /usr/syno/share/nginx/,该目录下就是nginx的模板文件。Portal.mustache就是我们要修改的文件。
打开这个文件,可以看到是用mustache写的模板文件,里面用到了一些参数,生成的时候应该是从某个json文件读取的。
通过查找终于发现,这个json文件在/usr/syno/etc/www路径下,其中ReverseProxy.json就是我们需要的文件
查看这个文件的内容,对其进行格式化,可以发现,里面的数据就是我们刚才填写反向代理的数据
接下来回到最开始的/usr/syno/share/nginx/目录下,运行sudo vi Portal.mustache,修改模板文件,在location之前添加模板,具体代码看图,这里用到了nginx的error_page 497进行重定向,上下两个括弧是模板语言,大概意思就是当括弧里的https.hsts的值为true时,就渲染中间那行的代码,所以刚才添加反向代理规则时要把这个参数勾上,这里可以用到。
修改完模板后,运行sudo synoservicecfg --restart nginx,重启nginx服务,重启之后,执行cd /etc/nginx/app.d/,生成的配置文件server.ReverseProxy.conf就在该目录下
查看该文件,可以看到对于开启了https的4430端口,已经添加了重定向规则,而我设置的另一个作为测试的未开启https的4431端口,则不会添加重定向规则,这样就保证有https的服务都能自动跳转https,不支持https的服务则不受影响。
总结
到此,对于开启https的服务,就可以在浏览器直接输入域名+端口号直接访问了,省去了输入https://的步骤,端口号也只需要记一个。以上只是我自己的访问方案,希望对各位能有帮助
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~











OKCup
校验提示文案
Prosus
校验提示文案
Hardy555
校验提示文案
值友2333764270
校验提示文案
沙胆曾
校验提示文案
imco
校验提示文案
殇别离
校验提示文案
值友8215112012
校验提示文案
xyzhangxin
校验提示文案
余歌唱晚
校验提示文案
Mkiing
校验提示文案
值友2580541666
校验提示文案
伢伢爸爸
校验提示文案
碍事蔡
校验提示文案
liiway
校验提示文案
玛卡巴卡wu_
1. 【设置反向代理 - 一定要打开HSTS以及HTTP/2】 DSM7中没有HTTP/2选项,改为打开HSTS即可
2. 【修改群晖nginx配置模板】 DSM7中把HSTS模板文件单独拎出来了,不需要修改Portal.mustache文件,仅仅需要修改HSTS.mustache文件。
命令: sudo vi HSTS.mustache 然后按 i 进入编辑模式
在正常来说DSM7.0只有一行文字在里面,在文件末尾添加lz给的代码
error_page 497 https://$host:$server_port$request_uri;
然后:wq保存即可
3.【修改完模板后,重启nginx服务】DSM7中命令已改为 synosystemctl restart nginx
4.【生成的配置文件server.ReverseProxy.conf就在该目录下】 该目录在DSM7中已改为 /etc/nginx/sites-enabled
最后感谢楼主分享,非常实用的一篇文章!
校验提示文案
默不华
思路很棒…经常在外登录的可能会需要。
但注册一个短域名是真的方便
校验提示文案
boyLen
校验提示文案
值友9527Pro
校验提示文案
flygmw
校验提示文案
值友4846335094
校验提示文案
浮生行简
校验提示文案
boyLen
校验提示文案
qml689986
校验提示文案
值友3285421712
校验提示文案
伢伢爸爸
校验提示文案
值友2580541666
校验提示文案
值友3088816291
校验提示文案
脉了个动
校验提示文案
浮夸_
校验提示文案
Butwhy
校验提示文案
Mkiing
校验提示文案
SanNdMan
校验提示文案
余歌唱晚
校验提示文案
xyzhangxin
校验提示文案
取名有难度还是随便吧
校验提示文案
子疯
校验提示文案
玛卡巴卡wu_
1. 【设置反向代理 - 一定要打开HSTS以及HTTP/2】 DSM7中没有HTTP/2选项,改为打开HSTS即可
2. 【修改群晖nginx配置模板】 DSM7中把HSTS模板文件单独拎出来了,不需要修改Portal.mustache文件,仅仅需要修改HSTS.mustache文件。
命令: sudo vi HSTS.mustache 然后按 i 进入编辑模式
在正常来说DSM7.0只有一行文字在里面,在文件末尾添加lz给的代码
error_page 497 https://$host:$server_port$request_uri;
然后:wq保存即可
3.【修改完模板后,重启nginx服务】DSM7中命令已改为 synosystemctl restart nginx
4.【生成的配置文件server.ReverseProxy.conf就在该目录下】 该目录在DSM7中已改为 /etc/nginx/sites-enabled
最后感谢楼主分享,非常实用的一篇文章!
校验提示文案
adobe1
校验提示文案
默不华
思路很棒…经常在外登录的可能会需要。
但注册一个短域名是真的方便
校验提示文案