买个云服务器搭建本身的ngrok作微信公众号开发

[TOC]node

写在前面的话,2019年中旬本身开发了一个微信公众号,一直用的小米球的ngrok作内网穿透接口调试,免费的午饭终究吃不了过久。本着坚持勤俭持家的理念,让我购买付费业务是不可能的,索性本身在之前购买的云服务器搭建ngrok。nginx作端口转发

准备

一台云服务器,一个域名,我用的服务器的操做系统为CentOS7(amd64)linux

安装环境

安装gcc和git(用于下载ngrok源码)nginx

yum install gcc -y
yum install git -y

安装go语言环境

yum install -y mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386

检查环境安装

git --version //( >= 1.7 )
go version

在服务器上搭建Ngrok服务

下载ngrok源码

git clone https://github.com/inconshreveable/ngrok.git

生成证书

cd ngrok

abc.com这里修改成本身的域名git

export NGROK_DOMAIN="abc.com"

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 device.key 2048

openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

将新生成的证书替换

cp -y rootCA.pem assets/client/tls/ngrokroot.crt

cp -y device.crt assets/server/tls/snakeoil.crt

cp -y device.key assets/server/tls/snakeoil.key

编译生成ngrokd(服务端)

GOOS=linux GOARCH=amd64 make release-server

​ 生成在~/ngrok/bin/目录中github

编译生成ngrok(客户端)

GOOS=windows GOARCH=amd64 make release-client

​ 生成在~/ngrok/bin/windows_amd64/目录中golang

将服务器中生成的客户端下载到本地

将~/ngrok/bin/windows_amd64/里的文件下载到本地Windows下,如D:ngrokweb

在D:ngrok中新建文件,更名为 ngrok.cfg
文件中输入:windows

server_addr: "ngrok.abc.com:8083"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "www"
    proto:
      http: "80"
      
  https:
    subdomain: "www"
    proto:
      https: "443"
 
  ssh:
    remote_port: 2222
    proto:
      tcp: "22"

  mstsc:
        remote_port: 52222      
        proto:
         tcp: "192.168.0.107:3389"

以上 8083 80 443 与 远程开启的端口一致,安全

注意:查看本身云服务器安全组是否开放端口,还有防火墙是否开放端口(这里我卡了很久)服务器

开启远程服务

在ngrok目录中

若是不在

cd ngrok
sudo ./bin/ngrokd -domain="abc.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &

这里的端口号与config文件对应,视状况而定

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry][tun] No affinity cache specified

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:80

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:8083

[16:05:23 CST 2018/01/09][INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

显示此为成功开启

开启客户机服务

在Windows中D:\ngrok新建文件 更名 start.bat

输入:

ngrok -config=ngrok.cfg start http https ssh mstsc

直接双击运行

启动服务端报错 80端口被占用

以前个人云服务搭建多其它web应用,若是不用80端口转发,那微信后台用不了,解决办法nginx作端口转发

修改端口 启动ngrok

~/ngrok/bin/ngrokd -domain="ngrok.abc.com"  -httpAddr=":8080" -httpsAddr=":8443" -tunnelAddr=":4443" &

nginx配置

server
{
    listen 80;
    server_name *.ngrok.abc.com ngrok.abc.com;
    location / {
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header Host $http_host:8080;
                        proxy_set_header X-Nginx-Proxy true;
                        proxy_set_header Connection "";
                        proxy_pass http://127.0.0.1:8080;
        }
}

访问www.ngrok.abc.com这样就能够转发到www.ngrok.abc.com:8080

客户端链接不到服务器的状况

一、查看是否泛解析三级域名

二、生成的客户端的密钥是否一致

三、测试域名 端口是否都以开放

本文由博客一文多发平台 OpenWrite 发布!
相关文章
相关标签/搜索