【写在前面】
本人技术宅小小小白一枚(菜要说三遍),最近写完一个小程序后发现如果没有配置合法域名的话,就只能在调试模式下响应自己搭的服务器后端,自然这是比较麻烦的,所以问了很多大佬,自己也在网上搜集了很多方法,终于实现了!
【前提条件】
搭过小程序的朋友想必都很清楚,小程序对于域名的要求是比较高的,需要校验TLS版本以及HTTP证书,讲白了就是需要https开头的域名,详细见下图:
所以在看下面内容前,你要具备:
①需要用后端与自己的小程序进行交互(wx.request()…)
且后端已经搭建完毕,只差反向代理临门一脚
(我本人的小程序后端是基于python的flask框架)
②阿里云(或其他)上有已经备案过的合法域名,具体百度上都有,可以先去看看。
③云服务器上已经安装过“宝塔”服务器运营管理面板
注意:一定要在自己的云服务器上装宝塔,而不是自己的物理机上!!!
怎么,现在都安装好了?那我们就开始吧!
1.安装“宝塔”服务器运营管理面板
安装链接:https://www.bt.cn/
(版本根据你自己云服务器的系统去选择)
我的云服务器系统是windows server 2012 , 所以我将以我的云服务器为例讲解具体的操作。
安装完成之后界面如下:
从上图中我们根据提示访问面板地址,输入账号和密码
注意:面板地址在本机打开,宝塔在云服务器上就行
如果打开的网址无法显示,则看一下注意事项。首先检查一下自己浏览器版本是否符合,如果还不行,则需要我们前往阿里云设置一下安全组内容,放行它所列出的相关端口。具体操作如下:
①登录阿里云服务器,进入控制台,在上方的搜索栏中可以直接搜索“云服务器”选择 云服务器ecs控制台进入,然后点击 网络与安全,再选择 安全组,进入 配置规则
进入如下界面:
②入方向中 添加安全组规则**(右上方)
端口范围选择1/10000(意思是匹配端口范围为1-10000)
授权对象填写 0.0.0.0/0(意思是默认匹配所有端口)
以上操作完成后,那么我们的安全组就成功放行了1-10000的所有端口啦!!!这时候我们再打开面板地址,输入提供的用户名和密码就可以进入宝塔啦!!!
这时候一般会有弹出框,让你选择下载一种web服务器,一定要选择噢,后面反向代理要用到,这里我选择下载的是Apache服务器。
不要骄傲呦,后面的路还很长!
2.下载FRP内网穿透工具
官网上都可以下载,附上链接
http://www.chuantou.org/
(下载不了的话私信我发你安装包)
要注意的是,在你的本机和云服务器端都要下载FRP,需要同时配置服务器端和客户端,实现交互功能
这里需要解释一下为什么要下载内网穿透工具,以下仅是我个人的一些理解,如有错误,欢迎指正:
专业知识不够,只能讲个大概,我们自己搭的小程序后端是在我们本机的局域网下运行的,要想实现用户通过外网访问小程序并响应服务器,则需实现内网穿透。
当然,我们也可以不需要用内网穿透,直接放在自己的云服务器下跑就可以了,不过自己在使用云服务器跑小程序时,无法顺利响应后端,故只能移步到我的本机
这时候我们的FRP闪亮登场啦!!!之前有用过花生壳和NATAPP,嘶感觉解决不了我https响应的问题
①下载完成后,打开文件,显示如下:
可以很清楚看到,里面包含frpc(客户端)和frps(服务器端)两类文件,下面我们开始配置吧!
②首先我们在云服务器中打开该文件夹,双击打开frps.ini文件,将里面内容修改为:
[common]
#服务器端端口
bind_port=7000
#客户端连接凭证
privilege_token=5201314
#最大连接数
max_pool_count=10
#客户端映射的端口
vhost_http_port = 5200
#服务器看板的访问端口
dashboard_port=7500
#服务器看板账户
dashboard_user=admin
dashboard_pwd=admin
打开服务器的cmd,cd到文件夹路径,输入
frps.exe -c frps.ini
注意这是在服务器里的命令!
③在本机中,同样进行相应的操作,但注意
[common]
server_addr = xx.xx.xx.xx #云服务器的公网ip地址
server_port = 7000
privilege_token=5201314
[web]
type = http
local_port = 5000 #默认响应端口
custom_domains = xxxx #合法域名
[tcp1]
type = tcp
local_port = 9091
remote_port = 1111
不清楚也没关系,照样子改一下,后面再深入学习
打开本机的cmd,cd到文件夹路径,输入
frpc.exe -c frpc.ini
注意这是在用户机里的命令!
以上我们就已经成功实现内网穿透啦!!!
接下来就是见证奇迹的时刻
首先我们在本机上打开实现准备好的域名,加端口7500
#服务器看板的访问端口
dashboard_port=7500
输入用户名和密码—>均为admin,在服务器端自行设置
#服务器看板账户
dashboard_user=admin
dashboard_pwd=admin
进入的页面就是我们实现内网穿透的详细信息啦
然后 我们更换端口为5200
#客户端映射的端口
vhost_http_port = 5200
进入的页面就是我们后台所实现的功能界面啦(如果你写了与小程序响应的页面的话)
做到这里我们已经成功实现了内网穿透喽!
3.使用Nginx/Apache实现反向代理
①这里我们就要用到宝塔啦,进入宝塔,在左侧选项栏中选择网站,点击添加站点
②建好后,点击域名进入,在左侧选项栏中选择SSL
下载SSL证书并输入密钥及证书(百度有教程)
③再在左侧选项栏中选择反向代理
③然后点击添加反向代理,相应操作如图:
(我用的是Apache服务器,和nginx服务器的弹出框稍微有些不同,不过无影响)
④最后在浏览器中输入域名
啊!终于结束啦!至此,我们已经成功的通过Apache反向代理实现了我们所需要的端口转发啦!这时候我们再用小程序调用wx.request()、wx.uploadFile()等函数就可以在检验合法域名的情况下轻松的返回想要的数据啦!!!
【写在后面】
对于小程序只能在调试模式下返回数据实在很闹心,所以解决上述问题之后实在“大快人心 ”!上述过程若有疑惑之处,欢迎留言或私信交流哦!看完后觉得有用的话,点个赞再走呗