1.这两天公司在开发微信小程序的东西,需要后台提供https域名的 接口,测试及正式服务器倒是简单,因为已经配置了域名和证书,但是本地如何实现https的接口访问地址那?开始用的花生壳 那个坑呀,网络很不稳定 ,容易断.还好前人种树后人乘凉,已经有大佬给出解决方案了,那就是frp内网穿透工具.

2.frp的基本原理是这样的:利用公网中的机器 启动启动服务端,内网穿透的机器启动客户端,服务端与客户端通过 通信端口bind_port通信,服务端开启穿透内网机器的http_port端口号,访问外网机器的ip:port ,frp会将请求转发给 与客户端通信的bind_port端口, 服务端将请求转发给客户端的bind_port端口,bind_port再转发给 本地的http_port端口.简单来说就是以下这样:外网访问ip:http_port–>frp收到请求转发给–>frp服务端bind_port—>与frp客户端通信 -->frp 客户端bind_port收到消息—>转发给本地http_port端口–>完成请求

3.使用方法:frp在github上有中文教程(frp GitHub地址),安装方法这里就不赘述了.这里直接给出使用配置文件实例,frpc客户端与frps服务端通信端口使用的7000,frp网页管理界面使用7500端口,监听的http端口为8080端口(也是内网本地部署项目的端口)

frps.ini 公网服务器机器部署文件:

[common]
#服务器端端口
bind_port=7000
#客户端连接凭证
privilege_token=xxx
#最大连接数
max_pool_count=5

#客户端映射的端口
vhost_http_port = 8080

#服务器看板的访问端口
dashboard_port=7500
#服务器看板账户
dashboard_user=xxx
dashboard_pwd=xxx

frpc.ini

[common]
#服务器地址
server_addr=39.105.110.10
#服务器端口
server_port=7000
#服务器连接凭证
privilege_token=cjy799571572


[httpname]
type = http
local_port = 8080
local_ip = 127.0.0.1
custom_domains = xxx

4.启动服务端及客户端的命令如下

frps服务端 进入frp安装路径(公网机器是Centos系统阿里云) ./frps -c ./frps.ini

将内外映射到云平台 内网映射到外网的https端口_服务器


frpc客户端 frpc.exe -c frpc.ini

将内外映射到云平台 内网映射到外网的https端口_服务端_02

5.启动成功后 访问外网域名 xxx:port/webproject/xxx即可 映射到本地服务中,可能看完上面讲的,有些朋友会感到疑惑,https的方式 还没讲那,其实道理是一样的,只不过 需要把https的请求 通过nginx服务器代理转发给frp端,流程思路如下:访问https://xxx/webproject/xxx(https默认为443端口)---->nginx配置https请求转发 -->匹配到webproject路径 则转发给frps服务端的 8080端口(同时把请求替换为http请求) ----->后面frp使用http的方式一致.

6.管理界面如下

将内外映射到云平台 内网映射到外网的https端口_服务器_03

7.外网访问地址如下

将内外映射到云平台 内网映射到外网的https端口_客户端_04

本地服务器接收到请求 返回验证码

将内外映射到云平台 内网映射到外网的https端口_客户端_05