FRP内网穿透,搭配Nginx实现https代理

环境需要
偷懒直接使用宝塔面板,或者mdserver-web,面板主要是方便配置Nginx
域名解析到服务端IP
面板搭建
这里演示我搭建的是开源的mdserver-web
一键安装脚本
1 | curl -fsSL https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/scripts/install.sh | bash |
安装成功后会显示登录信息,登录后及时修改登录信息

安装OpenResty,OpenResty是基于 Nginx 与 Lua 的高性能 Web 平台,宝塔直接安装Nginx就行。

域名解析
配置例如*.abc.com
的泛域名,记录*
指向frp 服务器地址
.其含义是指访问任何二级域名都是访问到frp 服务器
,由frp 服务器
转发到内网群晖反向代理服务器.

FRPs服务器搭建
下载服务端
1 | wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz |
解压frps到/usr/local/frp目录下
1 | tar -zxvf frp_0.45.0_linux_amd64.tar.gz -C /usr/local/ |
重命名解压后目录
1 | cd /usr/local&mv frp_0.45.0_linux_amd64 frp |
启动frps
使用systemd控制frps开机自启动
新建frps.service文件
1 | nano /etc/systemd/system/frps.service |
写入内容
1 | [Unit] |
使用 systemd
命令,启动并管理 frps。
1 | # 启动frp |
配置 frps 开机自启。
1 | systemctl enable frps |
配置服务端frps.ini nano /usr/local/frp/frps.ini
1 | [common] |
配置完成后systemctl restart frps
重启服务器
至此服务端搭建完毕
FRPc客户端搭建
还是偷懒直接使用套件源安装,群晖套件中心添加社区套件来源。其他安装方式推荐参考此文章客户端 frpc 安装教程汇总 - 思有云 - IOIOX
1 | https://spk7.imnks.com/ |

搜索frpc安装好

打开套件配置frpc.ini
1 | [common] |
至此客户端配置完成,点击保存frpc套件会自动重启生效
浏览器登录服务端web后台ip:6443
可以看到已经代理生效了

服务端面板配置https代理
前面环境确认已安装好nginx或OpenResty运行环境
配置ssl证书
新建一个站点

面板不支持泛域名证书申请,建议参考此文章部署acme.sh,申请免费SSL证书 - ZM Blog (b-log.ga)申请一个泛域名SSL证书

cat部署好的证书cer、key
查看到的证书内容复制cer、key到面板站点ssl配置并部署

查看面板站点配置文件,找到ssl配置后存放的路径

使用下面acme.sh部署命令,部署刚刚申请的证书,这样证书到期了acme.sh就会自动续签并更新到该路径下
注意替换自己的域名、路径
1 | acme.sh --install-cert -d *.abc.com \ |
域名匹配到frps服务
配置文件在server块插入以下location块,表示该域名匹配代理到本机的8010端口8010端口即frps的http访问端口
1 | location / { |

在配置文件中找到以下两个location块删除,不然网页会显示不正常

重启会重载nginx后
至此访问一个frp代理的http网页,就会自动成功跳转到htpps。