目录

使用 Frp + Nginx 反代实现用域名访问群晖 NAS

本教程纯属记录自己的操作,所以没有配图(其实是比较懒),可能很多地方都是一笔带过,详细的教程可以进文章后面列出的参考教程链接,见谅!

frp是一款开源的反向代理工具,可用于内网穿透的高性能的反向代理应用,支持tcp,udp协议,为http和https应用协议提供了额外的能力。

Frps安装配置

VPS CentOS 7 下安装Frps

一键安装脚本

1
    wget https://raw.githubusercontent.com/stilleshan/frps/master/frps_linux_install.sh && chmod +x frps_linux_install.sh && ./frps_linux_install.sh

卸载脚本

1
    wget https://raw.githubusercontent.com/stilleshan/frps/master/frps_linux_uninstall.sh && chmod +x frps_linux_uninstall.sh && ./frps_linux_uninstall.sh

安装完成后配置frps.ini并重启服务

vi /usr/local/frp/frps.ini
# 修改 frps.ini 配置
sudo systemctl restart frps
# 重启 frps 服务即可生效

配置参考

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
    [common]
    bind_addr = 0.0.0.0        #frp服务器ip
    bind_port = 7000#          #frp服务通信端口
    bind_udp_port = 7001       #frp服务udp端口
    kcp_bind_port = 7000       #frp服务kcp端口
    vhost_http_port = 80       #frp进行http穿透服务端口
    vhost_https_port = 443     #frp进行https穿透服务端口
    dashboard_addr = 0.0.0.0   #frp控制台ip
    dashboard_port = 7500      #frp控制台服务端口
    dashboard_user = admin     #frp控制台用户名
    dashboard_pwd = admin      #frp控制台密码
    log_file = ./frps.log      #日志文件路径
    log_level = info           #日志等级,默认是info
    log_max_days = 3           #日志保留天数,范围1到30天
    disable_log_color = false  
    token = 12345678           #客户端配置token
    allow_ports = 2000-3000,3001,3003,4000-50000
    max_pool_count = 5
    max_ports_per_client = 0
    subdomain_host = frps.com
    tcp_mux = true

以上内容可以根据自身情况修改,对应端口记得开放

使用systemctl命令来控制frps

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    sudo systemctl start frps
    # 启动frps
    sudo systemctl enable frps
    # 服务器开机自动启动frps
    sudo systemctl status frps
    # 查看状态
    sudo systemctl restart frps
    # 重启frps
    sudo systemctl stop frps
    # 停止frps

现在可以输入http://服务器IP:7500来查看 frps 服务状态

Frpc安装配置

建议直接用路由器Frpc插件,路由器不支持的话再用群晖Docker使用Frpc

刷了梅林固件的路由器直接在软件中心安装frpc插件即可。

群晖的话要先在套件中心安装Docker,然后在Docker的注册表中搜索Frpc进行下载,在映像里启动。

我这边因为使用的是路由器,没用群晖Docker里的frpc,所以操作就没写出来

Nginx反代操作

先将域名解析到vps的ip,如果你要用多个子域名的话建议直接做泛域名解析,避免一直需要进行增减解析操作。

基于宝塔的操作:

新建网站,域名填主域名和一个泛域名

然后到SSL–Let’s Encrypt–DNS验证(支持通配符)

自己选择DNS接口,勾上自动组合泛域名、主域名和泛域名,申请证书,完成后开启强制https

再到反向代理里添加一个反向代理,注意这里的操作:

代理名称随便填

目标URL http://127.0.0.1:80 #这里的80要改成你设置的frp的http端口

发送域名 $host

保存,现在已经可以通过域名访问了。

说明:这样子设置只是frps服务器到访问者走的https,而从你frpc到frps是http,并不是全程加密的。frpc到frps走https端口会直接502错误,也尝试了网上的多种方法还是没办法有效解决。

这边列两个网上的解决方法,但是本人没试成功,可能不一定完全有效:

frpc+frps+nginx反代+解析后端真实IP+双向https自动跳转+https证书配置的纯享版配置文件及操作指导

Frp使用Nginx前端反向代理Https

内网域名访问

在群晖的套件中心安装DNS Server–区域–新增–Master区域

域类型:正向区域

完整域名:填你的域名

主DNS服务器:填群晖NAS的内网ip

其他的保持默认就ok,确定后列表里会有刚才添加的域名,双击域名,新增一条A记录,为了方便建议直接泛解析,ip地址同样填群晖NAS的内网ip,完成。

进入路由器将内部网络(LAN)-DHCP服务器的DNS Server1设置成群晖内网ip地址,DNS Server2要为空或者设置成路由器ip,保存设置后,把设备重新连接或者重启路由器就可以了。

群晖控制面板–切换到高级模式–安全性–证书–新增

你可以将在vps上申请的证书导入或者重新申请都可以。

内网域名反向代理

完成上面的操作虽然可以域名访问了,但是只能访问到默认端口的服务,如果要访问其他端口就需要进行反向代理了

群晖控制面板–切换到高级模式–应用程序下的Synology应用程序门户– 反向代理服务器

按需添加即可。

参考文章

[1]. CentOS 7 安装配置frp内网穿透服务器端教程

[2]. frpc+frps+nginx反代+解析后端真实IP+双向https自动跳转+https证书配置的纯享版配置文件及操作指导

[3]. Frp使用Nginx前端反向代理Https