天天看點

微信公衆号開發80端口映射之搭建ngrok伺服器

說明

了解本文之前,最好先看前篇:<<微信公衆号開發80端口映射解決方案>>。最近公司要搞微信公衆号開發,需要解決80端口映射的問題,為了穩定可靠,隻好自己搭建ngrok服務端。ngrok 是一個使用go語言編寫的反向代理軟體,通過在公共的端點和本地運作的 Web 伺服器之間建立一個安全的通道,實作内網穿透。ngrok 可捕獲和分析所有通道上的流量,便于後期分析和重放。

環境和條件

伺服器Centos6.8_x64+windows10_x64

一台有公網ip的伺服器

域名解析到伺服器。此處拿域名ngrok.XXX.com舉例。

關于域名解析,如果你的域名是為此專用的,可以開啟泛解析到此伺服器上面。如果你的主域名已經在用,你僅僅需要一個二級域名解析到此伺服器,并且開啟二級域名的泛解析。我選擇是第二種,如下圖。當然你不做泛解析也可以,自己在本地hosts檔案添加記錄也可以。

微信公衆号開發80端口映射之搭建ngrok伺服器
微信公衆号開發80端口映射之搭建ngrok伺服器

安裝步驟

一.安裝依賴包

yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ git      

二.安裝go語言環境

可以選擇yum安裝,我選擇yum安裝

yum install -y golang

也可以手動安裝,下載下傳位址http://www.golangtc.com/download

下載下傳安裝包之後,直接解壓,配置環境變量即可。

三.編譯ngrok

3.1下載下傳ngrok源碼并設定變量

cd /usr/local/

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

export GOPATH=/usr/local/ngrok/

export NGROK_DOMAIN="ngrok.XXX.com"

cd /usr/local/ngrok

3.2生成自簽名證書,ngrok為ssl加密連接配接。

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

伺服器在國内需要修改,在國外不用修改

vim /usr/local/ngrok/src/ngrok/log/logger.go

log "github.com/keepeye/log4go"

3.3 編譯服務端和linux用戶端,GOOS和GOARCH可以參照go env

cd /usr/local/ngrok/

GOOS=linux GOARCH=amd64

make clean

make release-server release-client

執行完會在目前目錄生成一個

bin

檔案夾,裡面包含了

ngrokd

ngrok

檔案;

其中,

bin/ngrokd

檔案是服務端程式;

bin/ngrok

檔案是用戶端程式(注意上面指定了

GOOS

64位linux的,是以這個檔案是不能在

mac

win

等其他平台跑的,下面将進行說明如何交叉編譯)

3.4 交叉編譯用戶端

Windows用戶端

GOOS=windows GOARCH=amd64 

make release-client

MAC用戶端

GOOS=darwin GOARCH=amd64

用戶端配置檔案

server_addr: "ngrok.XXX.com:4443"

trust_host_root_certs: false

四.啟動服務

/usr/local/ngrok/bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"

背景運作

setsid /usr/local/ngrok/bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"

啟動服務後會,預設會開啟監聽80,443,4443。當然80和443端口你可以指定端口,隻需要如下啟動服務

bin/ngrokd -domain="ngrok.XXX.com" -httpAddr=":8888" -httpsAddr=":8889"

微信公衆号開發80端口映射之搭建ngrok伺服器

開啟用戶端

ngrok -config=ngrok.cfg -subdomain=test 80

繼續閱讀