Oldghost's Blog » 群晖(Synology)反向代理服务器教程

Oldghost's Blog » 群晖(Synology)反向代理服务器教程

群晖(Synology)反向代理服务器教程

反向代理(简称反代)使你可以从外网访问家里或公司等内网的设备,省去为每个内网设备在路由器设置端口转发的麻烦。尤其是强迫症患者不喜欢带端口访问,反代可以解决你的烦恼。反代有哪些好处和详细用法请度娘“反向代理”。

简单介绍我的环境及要实现的效果:
 备注:电信封了80端口,我只能用443。群晖DSM版本需6.0以上才有反代功能。

  1. 用DSM当反代服务器,IP地址为:192.168.1.100
  2. 域名假设为mydomain.com
  3. 通过https://nas.mydomain.com访问DSM管理界面。
  4. 通过https://nas.mydomain.com/photo或https://photo.mydomain.com访问Photo Station
  5. 通过https://blog.mydomain.com访问DSM上的WordPress博客站点
  6. 通过https://ros.mydomain.com访问我的路由器(RB750Gr2,IP:192.168.1.1

首先在路由器设置端口转发,外网443端口转发到内网192.168.1.100的443端口。ROS在IP–>Firewall–>NAT下设置如下,其他路由器请自行设置。

进入群晖系统,在控制面板找到反向代理服务器入口。

点击新增,首先给DSM管理界面作反代。设置说明如下:

1 描述:随便取名
2  
3 来源:
4 协议:选HTTPS
5 主机名:填nas.mydomain.com
6 端口:填443
7  
8 目的地:
9 协议:选HTTPS
10 主机名:填192.168.1.100
11 端口:填5001

 

ROS路由器管理界面反代参考上面的方法完成如下设置:

 

博客的设置不太一样,通过群晖套件Web Station建立虚拟主机(Virtual Host)实现,设置如下:

1 主机名:填blog.mydomain.com
2 端口:勾上,如果不用80/443请勾选下面的选项自行填入端口号
3 文档根目录:选web/wordpress,这是wordpress的默认安装路径
4 HTTP后端服务器:选Apache,如选nginx页面显示会不正常
5 PHP:选PHP 5.6

 

最后讲Photo Station的反代,因网址带二级目录,需ssh进入群晖系统手动修改nginx配置。

先启用群晖的SSH功能,用putty连入DSM系统,使用管理员账户登录,然后输入sudo -i(密码和管理员帐号的一样)切换root权限,用vi/vim打开/etc/nginx/app.d/server.ReverseProxy.conf文件,添加以下高亮的那三行,然后保存退出。执行nginx -s reload命令重新加载配置文件,就可以使用https://nas.mydomain.com/photo访问Photo Station了。

如要使用https://photo.mydomain.com访问Photo Station,请参考本文末的说明。

1 server {
2 listen 443 ssl;
3 listen [::]:443 ssl;
4 server_name nas.mydomain.com;
5 ssl_certificate /usr/syno/etc/certificate/ReverseProxy/c79eeccc-f248-4b72-9b9e-8348d8c943ec/fullchain.pem;
6 ssl_certificate_key /usr/syno/etc/certificate/ReverseProxy/c79eeccc-f248-4b72-9b9e-8348d8c943ec/privkey.pem;
7 location / {
8 proxy_set_header Host $http_host;
9 proxy_set_header X-Real-IP $remote_addr;
10 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
11 proxy_set_header X-Forwarded-Proto $scheme;
12 proxy_intercept_errors on;
13 proxy_http_version 1.1;
15 }
16 location /photo { #Photo Station默认使用二级目录photo访问
17 proxy_pass https://192.168.1.100; #Photo Station使用80/443端口
18 }
19 }

到这并没结束,因为群晖系统每次重启或者网站配置等发生变化,nginx配置文件会被恢复成默认状态,也就是上面新加的三行没了。需建一个任务定期检查配置文件是否被修改,如果改了就用正确的配置文件覆盖系统的。

首先把改好的nginx配置文件保存到某个目录下,比如web/reverse_proxy下,执行如下命令:

1 cp /etc/nginx/app.d/server.ReverseProxy.conf /volume1/web/reverse_proxy/server.ReverseProxy.conf

接下来创建用户定义的脚本任务:

 

常规设置:任务名称:随便填

计划设置:每天运行频率根据需要填写,最后运行时间要选到一天的最后时间,不然过一段时间就不运行了。

任务设置:根据需要决定是否勾选通过电子邮件发送运行详情,搭配仅在脚本异常终止时发送运行详情选项决定是否每执行一次都发邮件还是仅在异常时发邮件,建议仅在异常时发送,减少邮件打扰频率。
用户定义的脚本框输入如下三行命令:

1 #!/bin/sh
2 syn_conf=/etc/nginx/app.d/server.ReverseProxy.conf
3 ok_conf=/volume1/web/reverse_proxy/server.ReverseProxy.conf
4 syn_filesize=`ls -l $syn_conf | awk '{ print $5 }'`
5 ok_filesize=`ls -l $ok_conf | awk '{ print $5 }'`
6 if [ $syn_filesize -ne $ok_filesize ]
7 then
8   cp $ok_conf $syn_conf
9   sudo nginx -s reload
10 fi

最后勾选刚建立的任务,点击保存。重启NAS或手动执行该任务确认所有反代的网址访问是否正常。

经过以上设置,群晖手机客户端APP也能正常使用,DS Photo使用nas.mydomain.com登录,其他APP使用nas.mydomain.com:443登录,因为Photo Station默认使用80/443端口,其他APP使用5000/5001端口,通过443端口反代转发到5000/5001端口。

##此处介绍如何使用https://photo.mydomain.com访问Photo Station。之前一直没有找到有效的方法,后来发帖到mobile01有网友提供了以下方法,测试成功。

1.在Web Station中创建虚拟主机,文档根目录指向web下面的某个文件夹,比如photostation;

2.在web/photostation中创建一个index.html文件,文件内容如下:

1 <html>
2 <body>
3 <iframe src="https://mydomain.com/photo/" frameborder="0" width="100%" height="100%">
4 </iframe>
5 </body>
6 </html>

3.在domain.com域名后台添加一个photo的CNAME记录。



Tags: published
October 24, 2019 at 02:32PM
Open in Evernote

评论

此博客中的热门博文

使用静态Aria2二进制文件快速安装Aria2,及使用方法 - Rat's Blog

使用Holer远程登录家里或公司内网的电脑 – Rat’s Blog