宝塔面板(nginx)+群晖frp通过传递IP与宝塔反向代理实现远程无时间差访问

一 方案对比说明

由于要在群晖上安装蚂蚁记事本等程序(见另一篇文章介绍),需要远程访问,本身我就有公网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

e327d53134383-1

配置Docker

点击打开,然后我们搜索

注册表

0cb37c4d04cde-1
2f68158f16cf7-1

这里的版本号我们选择最新版即可,当然也可以选择其它版本
12242_byss_5553-1

我们点击

File Station

为docker创建挂载目录

创建一个文件夹(文件夹的名字无所谓,方便管理就行)

eece898c711b4-1

接下来我们添加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

 

接下来我们上传修改好的配置文件
6bd08a2583a3a-1

接下来创建一个容器,来运行Docker

首先我们需要先下载一个frpc客户端镜像

926306f2d608e-1

启动容器

2a6bc0d359a6e-1

设置容器权限
548f3ec8ebf39-1

这里添加我们刚刚修改过的配置文件

frpc.ini

13039_cc87_4983-1

装载路径为(这个路径不能变)

  1. <span class="str">/frp/</span><span class="pln">frpc</span><span class="pun">.</span><span class="pln">ini</span>

853a3b91f1057-1

网络我们选择

使用Docker Host相同的网络

dfacc43a03c11-1

接下来我们点击

应用

deba816964ff9-1

点击下一步,启动docker容器
88c2b38a1672c-1

d1ebf6b204311-1

容器启动完成后我们就可以通过IP:端口进行访问
cc78d3be0f66f-1

fc1505eed6d08-1

以上部分为晖晖安装DOCK版frpc,教程基本一样,总结一下就是:

安装docker-添加文件夹及上传配置文件-拉取镜像-启动容器-配置挂载文件-再次启动容器

(三)宝塔设置部分

我们添加一个域名,并设置dns解析和添加https (具体方法不介绍了)
a31444394651b-1
a2eaf66bf2439-1

当可以直接通过域名访问的时候,接下来我们配置一下nginx

  • 添加反向代理

9923463584adf

  • 配置反向代理

17f198e5fe56a

 

对于不同的程序,可以使用不同的域名,提前解析好,全部地址指向VPS的地址,每一个建立一个网站,操作和前面一样,根据frpc中的配置添加代理端口即可。另外,可以直接从宝塔面板申请SSL证书并开户强制HTTPS,这样就可以通过HTTPS的方式访问了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享