最近在做APP开发,经常需要测试API接口,虽然可以部署到VPS上进行测试,但是版本同步太麻烦,于是决定用ngrok实现内网传统。
目前ngrok的官方服务器在国外,访问速度不佳,国内免费的ngrok服务限制太多,实际使用起来太麻烦,Google了下,决定自己动手自建Ngrok服务。

准备工作:

1、拥有独立IP的VPS一台
2、域名一枚

系统环境:CentOS 7 x64、MacOS X

步骤:

  1. 安装git、golang环境

    yum -y install git golang
  2. clone ngrok源码

    cd /usr/local
    git clone https://github.com/inconshreveable/ngrok.git
    export NGROK_DOMAIN="ngrok.moehoro.com"
    #设置域名变量,记得提前把ngrok.moehoro.com 和 *.ngrok.moehoro.com 解析到VPS的公网IP上
    cd ngrok
  3. 生成证书

    
    openssl genrsa -out rootCA.key 2048
    openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
    openssl genrsa -out server.key 2048
    openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
    openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
    
    #拷贝证书
    cp rootCA.pem assets/client/tls/ngrokroot.crt
    cp server.crt assets/server/tls/snakeoil.crt
    cp server.key assets/server/tls/snakeoil.key
  4. 编译

    #编译服务端,如何确认GOOS和GOARCH,可以通过go env来查看
    GOOS=linux GOARCH=amd64 make release-server
    #编译MAC OS 客户端
    GOOS=darwin GOARCH=amd64 make release-client
    #编译windows 客户端
    GOOS=windows GOARCH=amd64 make release-client
  5. 启动服务端

    #指定域名,http服务端口、https服务端口
    /usr/local/ngrok/bin/ngrokd -domain="ngrok.moehoro.com" -httpAddr=":8080" -httpsAddr=":8081"

    注意:SSH连接断开后服务会停掉,如果需要后台运行,可以参考这里

  6. 启动客户端

    #首先把/usr/local/ngrok/bin 目录下的客户端拷贝到本机环境
    #这里以MAC OS版本为例
    #创建一个配置文件
    vim ngrok.conf
    
    server_addr: "ngrok.moehoro.com:4443"
    trust_host_root_certs: false
    
    #授权并执行客户端
    chmod +x ngrok
    #这里的demo代表前置域名,8000代表需要代理的本地服务端口
    ./ngrok -subdomain demo  -config=ngrok.cfg 8000
    
    #访问http://demo.ngrok.meohoro.com:8080,穿透成功!

参考文章:

  1. https://www.sunnyos.com/article-show-48.html
  2. http://blog.csdn.net/u013216667/article/details/50782084

标签: ngrok

添加新评论