小白搭建ngrok完全手冊

恕我直言,連偷懶都不會的程序員,真的很累~
在這裏插入圖片描述
前段時間開發 微信公衆號後端,微信測試公衆號,需要配置公網域名。本地的居然用不了。
在這裏插入圖片描述

將本地服務映射到公網

  • 本地開發了一個服務,立即給開發的同事用,無需部署在服務器。
  • 開發微信公衆號,用ngrok能快速配置到測試賬號上。

你要準備這些

需要花點錢。

  1. 一個服務器,阿里雲、華爲雲上有99一年的服務器,買一個。
  2. 買一個域名,幾十塊一年。

1.域名解析

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.配置安全組

在這裏插入圖片描述
我開放了12020、12021、4443
在這裏插入圖片描述

3.安裝go編譯環境

本文以阿里雲服務器爲例,服務器必須有公網地址。
需要環境git、go
aliyun自帶git

go語言版本無要求,可以使用yum傻瓜式安裝(yum install go -y

4.ngrok版本

ngrok是開源的,但 早早就停止維護了。可以fork一個。避免哪天源碼都被刪除了。
在這裏插入圖片描述

5.下載ngrok源碼

cd ~/
mkdir ngrokService
cd ngrokService
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=~/ngrokService/ngrok/
export NGROK_DOMAIN="tunnel.你的域名.com"
cd ngrok

這裏的export兩個環境變量,有沒有用?
答案是有用的

6.生成自簽名證書

自建ngrokd服務,我們需要生成自己的證書,並提供攜帶該證書的ngrok客戶端。

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 rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt 
cp device.key assets/server/tls/snakeoil.key

7.編譯服務器端

阿里雲一般都是64位的,這年頭,有幾個是32位的。

GOOS=linux GOARCH=amd64 make release-server
#如果是32位系統,這裏 GOARCH=386

編譯時間比較長
在這裏插入圖片描述
這裏有很多下載。這樣就算編譯成功了。

7.1試一下
bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":8000" -httpsAddr=":4433"

沒報錯,就是這樣的輸出。
在這裏插入圖片描述

8.編譯客戶端

8.1 windows客戶端
GOOS=windows GOARCH=amd64 make release-client  
8.2 mac
GOOS=darwin GOARCH=amd64 make release-client

我用的是mac,用scp拷貝出來

沒出錯的話,你應該會看到這樣的東西
在這裏插入圖片描述

scp root@你的ECS服務器IP地址:~/ngrokService/ngrok/bin/darwin_amd64/ngrok ngrok-origin

記得要copy出來。我copy之後,用ln了這個文件

ln 你copy過來的ngrok文件  /usr/local/bin/ngrok

9.啓動服務器端

我們需要在後臺啓動,否則斷開ssh鏈接,service也就關了。

nohup ./bin/ngrokd -tlsKey=device.key -tlsCrt=device.crt -domain="tunnel.你的域名.com" -httpAddr=":12020" -httpsAddr=":12021" > /dev/null 2>log &

10.設置本地客戶端

在同級目錄下新建一個配置文件ngrok.cfg
server_addr: "tunnel.你的域名.com:4443"
trust_host_root_certs: false
tunnels:
  abc:
    proto:
      http: 12020
    subdomain: ngrok

這是我的ngrok.cfg文件

然後你執行就可以了

ngrok -subdomain=wangxueming -log=ngrok.log -config=ngrok.cfg 80

解釋一下

-config 就是上面配置文件ngrok.cfg的路徑
-subdomain 就是需要分配域名的前綴部分
-log 就是日誌的保存路徑
80 就是本機websever的端口,比如apache監聽的端口,一會ngrok會將請求映射到該端口上。看你自己的配置了。你監聽是什麼端口。

正常運行你會看到這樣的情況
在這裏插入圖片描述

在服務器端的日誌,會有這樣的信息
在這裏插入圖片描述
如果你發現bad cert,請檢查一下你的域名配置什麼的。
本文中,域名,端口一致的地方,請根據情況,自行配置,但是也需要保持一致。

截止發文,ngrok的搭建,全部刪除,試過一遍。應該是OK的。

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