场景说明

在微信小程序上线测试的时候,自主开发的后端服务在公司局域网,小程序前端在微信公众平台只支持配置https协议的域名来访问服务端。公司一直在使用frp内网穿透工具实现公网访问公司局域网服务,因此,研究如何实现frp代理https请求,通过自定义域名访问部署于内网的 Web 服务。

1方式

frp只做请求穿透代理,frp客户端配置的目标服务器中使用nginx实现https的请求代理
这种方式frp配置简单,系统部署与正常部署相同,使用相对简单,因此选择这种方式实现。

frp
简单来说,就是可以随时随地通过有公网 IP 的服务器中转连接到运行 frpc 程序的任意机器的任意端口

2实现过程

经过测试,发现使用第一种方式实现最为简单。

2.1配置内网穿透,在frp服务端配置文件中启用https

服务端一般安装在公网服务器上

在这里插入图片描述

2.2配置内网穿透,在frp客户端配置文件中增加配置

客户端一般在需要被公网使用的局域网服务器上

type表示请求类型,httphttpstcp
local_ip表示本地服务器的ip地址
local_port表示本地服务器的端口
remote_port表示对公网远程请求暴露的端口
subdomain表示子域名,将拼在一级域名前,例如一级域名为 test.com,子域名为 frp-test,则实际域名为frp-test.test.com
在这里插入图片描述

配置完成后重启服务
查看当前的frp客户端进程,kill该进程

ps -ef|grep frp

在这里插入图片描述

kill 80305

后台运行frp客户端

nohup ./frpc -c ./frpc.ini >> /dev/null 2>&1 &

2.3 申请ssl证书

阿里云免费ssl证书申请参考

2.4 在nginx中配置ssl证书

在阿里云SSL证书列表中下载Nginx服务器的文件,上传到在frp客户端配置的穿透的内网目标服务器上安装的Nginx的目录下,例如/etc/nginx/cert/。
在frp客户端配置的穿透的内网目标服务器上安装的Nginx中配置代理,将域名与证书配置到相应的https配置。
在这里插入图片描述

问题解决

部署成功后,使用域名和frp配置的https服务端代理端口访问无响应,检查frp服务端所在的公网云服务器的安全组配置中是否开放frp配置的https服务端代理端口。例如配置的端口是4430,需要手动添加4430端口的安全组规则,一般默认使用443端口。
在这里插入图片描述

GitHub 加速计划 / fr / frp
83.04 K
13 K
下载
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
最近提交(Master分支:3 个月前 )
4383756f 7 天前
6ba849fc 15 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐