買個雲服務器搭建自己的ngrok做微信公衆號開發

寫在前面的話,2019年中旬自己開發了一個微信公衆號,一直用的小米球的ngrok做內網穿透接口調試,免費的午餐終究吃不了太久。本着堅持勤儉持家的理念,讓我購買付費業務是不可能的,索性自己在以前購買的雲服務器搭建ngrok。nginx做端口轉發

準備

一臺雲服務器,一個域名,我用的服務器的操作系統爲CentOS7(amd64)
#安裝環境
安裝gcc和git(用於下載ngrok源碼)

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這裏修改爲自己的域名

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/目錄中

編譯生成ngrok(客戶端)

GOOS=windows GOARCH=amd64 make release-client

​ 生成在~/ngrok/bin/windows_amd64/目錄中

將服務器中生成的客戶端下載到本地

將~/ngrok/bin/windows_amd64/裏的文件下載到本地Windows下,如D:\ngrok

在D:\ngrok中新建文件,改名爲 ngrok.cfg
文件中輸入:

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

客戶端連接不到服務器的情況

1、查看是否泛解析三級域名

2、生成的客戶端的密鑰是否一致

3、測試域名 端口是否都以開放

高性能雲服務器2折起

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章