一 方案对比说明
由于要在群晖上安装蚂蚁记事本等程序(见另一篇文章介绍),需要远程访问,本身我就有公网IP,也有动态域名,有以下几种方案选择。
方案1,直接使用DDNS绑定动态域名,后来发现路由不支持回环功能(就是在局域网环境中无法通过远程访问,可以通过外网访问),这样就无法在局域网环境中使用了,并且DDNS在变化域名解析中会断线;
方案2,在折腾过程中,发现如果通过反向代理的方式,利用VPS的中转可以访问,于是就设置了直接进行反代动态域名,这样局域网就可以正常访问,但有一个问题是当动态域名IP变化时,宝塔的nginx无法再次识别IP,可能是由于nginx工作机制原因,开始仅解析一次,当DDNS变化时不再另行解析,在网上查了很多方法无法解决,后来采用了定时重启的方案,临时解决问题,但重启nxinx可能会对VPS上的其他程序造成影响,也会造成VPS加重负荷;
方案3,使用FRP+宝塔(nginx)结合方式,frp时时传递IP给vps的服务器,再使用宝塔反代,可直接通过域名访问,完美解决DDNS掉线问题,但访问速度会受限于VPS的性能及速度。
综合上,方案采取第三种。
二 方案配置需求
1.必须有可以直接连接上网的VPS作为中转;
2.必须要用域名绑定到VPS的IP上;
三 具体配置方案
(一)服务器端安装宝塔及frps
vps上安装宝塔面板(nginx)和frps(具体安装教程本篇略过),注意安装 过程中nginx使用了80与443端口,frps要重新选择端口,防止冲突无法运行,安装后确保frps运行正常。
(二)在客户端(dsm)中安装frpc,当然也可以使用其他客户端,具体如下;
群晖安装Docker
这里我们需要有服务端的IP和端口,这样就可以直接的群晖上面安装客户端即可
套件中心;搜索;
Docker
配置Docker
点击打开,然后我们搜索
注册表
这里的版本号我们选择最新版即可,当然也可以选择其它版本
我们点击
File Station
为docker创建挂载目录
创建一个文件夹(文件夹的名字无所谓,方便管理就行)
接下来我们添加frpc配置文件,将下方配置文件保存为frpc.in,上传至刚才建立的文件夹。
重点说下配置,网上教程基本的配置都是如下方式
[web1] type = http local_ip = 192.168.1.1 local_port = 60000 custom_domains = aa.com #泛域名可以使用下面方式 subdomain = frp [web2] type = http local_ip = 192.168.1.1 local_port = 9000 custom_domains = bb.com
该方式用于普通HTTP方式应该没问题,但是要用于HTTPS后就完全不行了,当使用宝塔反代后,当访问一个网站后,无论如何也无法访问第二个,可能由于SSL工作缓存的问题,在网上搜了很久没找到解决这种问题的办法,当然办法也肯定有,就是很麻烦,要配置服务端超时等,喜欢折腾的可以继续用这种。于是通过各种查找、分析,由于FRP支持IP\UDP\HTTP等协议,于是采取以下方案,主要是通过TCP端口转发的方式进行HTTPS的反代。如下
[common] server_addr = xxx.frps.cn #frps服务端的地址(基本上是公网IP或者域名) server_port = 7000 #frps服务端端口号(可以自己单独指定,这个必须与VPS上frps端口对应) token = abcbdrfdeg #frps服务端token认证 (这个可以加也可以不加,需要根据服务端配置文件来对应) [web1] #需代理程序名称,随意 type = tcp #采取TCP端口方式 local_ip = 192.168.1.1 #群晖的本地地址 local_port = 60000 #群晖本地程序端口 remote_port = 60000 #远程访问的端口 [note] type = tcp local_ip = 192.168.1.1 local_port = 9000 remote_port = 9000
接下来我们上传修改好的配置文件
接下来创建一个容器,来运行Docker
首先我们需要先下载一个frpc客户端镜像
启动容器
设置容器权限
这里添加我们刚刚修改过的配置文件
frpc.ini装载路径为(这个路径不能变)
<span class="str">/frp/</span><span class="pln">frpc</span><span class="pun">.</span><span class="pln">ini</span>网络我们选择
使用Docker Host相同的网络接下来我们点击
应用点击下一步,启动docker容器
容器启动完成后我们就可以通过IP:端口进行访问
以上部分为晖晖安装DOCK版frpc,教程基本一样,总结一下就是:
安装docker-添加文件夹及上传配置文件-拉取镜像-启动容器-配置挂载文件-再次启动容器
(三)宝塔设置部分
我们添加一个域名,并设置dns解析和添加https (具体方法不介绍了)
当可以直接通过域名访问的时候,接下来我们配置一下nginx
- 添加反向代理
- 配置反向代理
对于不同的程序,可以使用不同的域名,提前解析好,全部地址指向VPS的地址,每一个建立一个网站,操作和前面一样,根据frpc中的配置添加代理端口即可。另外,可以直接从宝塔面板申请SSL证书并开户强制HTTPS,这样就可以通过HTTPS的方式访问了。