搭建自己的ngrok服务
2019-8-4
| 2024-10-1
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

前言

2015年时做微信开发,当时因为调试h5支付只能在线上域名下运行,嫌频繁发布麻烦,就看了不少教程后搭建了自己的ngrok服务;最近又需要自己搭建使用的时候,又重新踩了不少坑才弄好,所以记录下过程方便以后查看;

准备工作

  1. 一台装了golang环境的电脑用来编译;
  1. 一台有公网的vps用来跑服务端;
  1. 一个域名用来解析服务地址(备案域名才能用于微信开发);

下载ngrok源码

自签名证书

首先需要export一个环境变量,地址为需要提供服务的域名,然后开始生成证书;

生成证书

拷贝证书

编译ngrok

如果客服端和服务端环境一样(如,linux+amd64),直接编译客户端+服务端就好
通常情况下服务端都是linux,客户端win、mac、linux都有,此时需要交叉编译; 在linux下编译64位的mac客户端如下所示:

启动服务端

  • 拷贝snakeoil.crt、snakeoil.key、ngrokd到vps上;
run.sh内容如下:

启动客户端

  • 拷贝ngrok文件到本地任意目录;
  • 在ngrok所在目录新建my.cfg文件,然后执行./ngrok -config=my.cfg start http #其中http为tunnels中的具体配置项;
my.cfg中配置了一个http代理,一个tcp代理,启动的时候指定需要的即可

代理配置

如上demo启动成功后可以通过http://t.n.songpo.pro:8081来访问;对用户来说,标准的80端口或者443端口使用起来更加方便;因为80和443被nginx占用,并且https的证书是自签名的,所以通过nginx代理更合适;
配置后可以通过http://t.n.songpo.pro 直接访问,对用户隐藏了8081这个端口号; 需要https的时候加下证书和端口即可,其它配置不变,继续转发到http://127.0.0.1:8081

注意事项

  • 所有的远程端口都需要防火墙配置入站规则为允许,如示例中端口为:80、3389、4443、8081、8082;
  • 上边用到的那些目录都需要root权限,需要在命令前加sudo,或者修改下$GOPATH的目录;
  • ngrok的2.0版本不再开源,github目前停留在最新的1.7版本;

同类软件

  • 花生壳(商业化软件,使用简单)

参考教程

  • 开发
  • 工具
  • 挂载Nextcloud数据到COS迁移博客到Typecho
    Loading...