CentOS7 搭建ngrok服務(wù)器-內(nèi)網(wǎng)穿透

【內(nèi)網(wǎng)穿透】相信很多同學(xué)沒有遇到,但做微信開發(fā)時钞护,需要接收微信服務(wù)器的消息就必須配置在線域名枢里,最簡單的辦法是用ngrok工具,它可以將本地服務(wù)映射到公網(wǎng)额获,但免費版本有很多不便,自己搭建服務(wù)爽播演!

前提條件

一臺云服務(wù)器,一個域名(二級域名也可以),并且域名正確解析到云服務(wù)器

環(huán)境配置

yum install -y gcc git
## go語言
wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz
tar -C /usr/local/ -zxvf go1.8.linux-amd64.tar.gz

添加環(huán)境變量,編輯:vi /etc/profile蹬挤,在最后添加:

#go lang
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

使環(huán)境變量生效:

source /etc/profile

檢查是否安裝成功:
go version

在服務(wù)器上搭建Ngrok服務(wù)

下載ngrok源碼

cd /usr/local/src
git clone https://github.com/inconshreveable/ngrok.git  ngrok

環(huán)境變量配置

vim /etc/profile

#這里修改為自己的域名
export NGROK_DOMAIN="uboff.com"

配置完成后,可以使用env命令查看是否生效调鲸。

生成證書

在自生成證書時需要一個解析到服務(wù)器上的主域名(二級域名也可以盛杰,本人已經(jīng)驗證過),現(xiàn)在以”uboff.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

將新生成的證書藐石,替換掉assets/client/tls下的證書

cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key

編譯生成ngrokd(服務(wù)端)

#這里是交叉編譯即供,linux系統(tǒng)GOOS=linux,64位系統(tǒng)GOARCH=amd64,32位系統(tǒng)GOARCH=386
#當前系統(tǒng)可用go env查看
GOOS=linux GOARCH=amd64 make release-server

編譯過程中可以會報依賴加載失敗贯钩,這是網(wǎng)絡(luò)原因?qū)е履伎瘢啻螄L試下載直到完成編譯。

啟動服務(wù)端(/usr/local/src/ngrok目錄下)

./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="$NGROK_DOMAIN"  -httpAddr=":8071" -httpsAddr=":8072" -tunnelAddr=":8073"
參數(shù)說明:
#-domain 訪問ngrok是所設(shè)置的服務(wù)地址生成證書時那個
#-httpAddr http協(xié)議端口 默認為80
#-httpsAddr https協(xié)議端口 默認為8072
#-tunnelAddr 通道端口 默認8073

出現(xiàn)下面信息角雷,啟動成功
注意:啟動服務(wù)所需要的端口一定要先開放;銮睢!勺三!

[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8081
[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:8082
[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:8083
[14:52:23 CST 2017/03/18] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

編譯生成ngrok(客戶端)

我這里生成windows下的客戶端
為go生成交叉編譯環(huán)境雷滚,執(zhí)行如下命令:

#這里是交叉編譯,linux系統(tǒng)GOOS=linux,64位系統(tǒng)GOARCH=amd64吗坚,32位系統(tǒng)GOARCH=386
#當前系統(tǒng)可用go env查看
GOOS=windows GOARCH=amd64 make release-client

#Linux 平臺 32 位系統(tǒng):GOOS=linux GOARCH=386
#Linux 平臺 64 位系統(tǒng):GOOS=linux GOARCH=amd64
#Windows 平臺 32 位系統(tǒng):GOOS=windows GOARCH=386
#Windows 平臺 64 位系統(tǒng):GOOS=windows GOARCH=amd64
#MAC 平臺 32 位系統(tǒng):GOOS=darwin GOARCH=386
#MAC 平臺 64 位系統(tǒng):GOOS=darwin GOARCH=amd64
#ARM 平臺:GOOS=linux GOARCH=arm

成功會在bin目錄下看到windows_amd64文件夾祈远,復(fù)制到windows電腦上即可啟動

內(nèi)網(wǎng)穿透

在windows_amd64目錄下新建一個ngrok.cfg文件,內(nèi)容如下:
注意:server_addr要與服務(wù)端一一對應(yīng)I淘础3捣荨!

server_addr: "xxx.com:8073"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "test"
    proto:
      http: "8090"
  http2:
    subdomain: "test2"
    proto:
      http: "8010"
  https:
    subdomain: "test"
    proto:
      https: "8091"
 
  ssh:
    remote_port: 2222
    proto:
      tcp: "22"
  log: 'out.log'

然后就可以啟動客戶端,我已經(jīng)把windows_amd64文件夾下載到D盤下牡彻,打開CMD輸入:
多種啟動方式扫沼,第一種方式可以啟動多個指定隧道出爹,第二種方式只有默認隧道(http/https)

下面的命令啟動多個隧道,調(diào)試時還可以加上日志
ngrok.exe -log=out.log -config=ngrok.cfg start http https ssh
or
下面會在域名前添加子域前綴
ngrok.exe -config=ngrok.cfg  -subdomain=ngrok 8090

會遇到以下錯誤:

control recovering from failure dial tcp: lookup xxx.com: no such host

此時需要配置本機hosts(c:\windows\system32\drivers\etc)缎除,如下:
如果不配置hosts严就,本地的ngrok就無法識別。

42.192.22.11  xxx.com

再次執(zhí)行器罐,看到下面信息則啟動成功:


image.png

打開http://www.xxx.com:8081即可看到成功打開梢为,到此Ngrok服務(wù)搭建完成。

后臺運行

使用上面的命令可以運行服務(wù)轰坊,但不能后臺運行铸董,這樣關(guān)閉命令窗口就會終止程序。

nohup ./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="$NGROK_DOMAIN"  -httpAddr=":8071" -httpsAddr=":8072" -tunnelAddr=":8073" &

公眾號坑

當在公眾號中啟用【服務(wù)端URL】時肴沫,域名后面不能使用端口袒炉,如下:


image.png

此時就需要把上面啟動服務(wù)的端口8081-->改為80,但是發(fā)現(xiàn)80端口已經(jīng)被占用了樊零,怎么解決我磁?

二級域名
解決方案是使用二級域名,正常注冊的域名是“xxx.com”驻襟,那么二級域名就是加一個前綴夺艰,如“ngrok.xxx.com”
理論上一個域名可以配置無數(shù)個二級域名。

配置二級域名

首先登錄到你注冊的域名服務(wù)器沉衣,按如下步驟操作

  1. 登錄管理控制臺郁副,找到“域名”并點擊進入域名中


    image.png
  2. 找到“域名解析”


    image.png
  3. 添加二級域名


    image.png

添加完成后,就可以測試二級域名了豌习,ping ngrok.xxx.com存谎,正常情況是可以ping通的。
注意:二級域名的解析IP要改為另一臺公網(wǎng)服務(wù)器肥隆,因為要用80端口<燃浴!栋艳!
記得把本地hosts也加上二級域名哦

重新配置ngrok服務(wù)恰聘,測試結(jié)果如下:


image.png

終于把端口去掉了。

問題又來了吸占,看ngrok生成的域名前面加了www晴叨,這樣的域名是無法訪問的?

配置三級域名

ngrok默認會加個www矾屯,所以咱們要手動指定三級域名兼蕊,如

ngrok.exe -log=out.log -config=ngrok.cfg -subdomain=test 8090

內(nèi)網(wǎng)穿透的結(jié)果如下:

image.png

現(xiàn)在把前面的www換成了test,這是一個三級域名件蚕,如何讓這個三級域名能夠正常訪問呢孙技?方法與添加二級域名一樣惧所,只是此時的名字是“test.ngrok”
image.png

配置三級域名完成后,就可以正常訪問了绪杏,就可以配置到公眾號的服務(wù)端URL了。

內(nèi)網(wǎng)穿透調(diào)用流程

  1. 公眾號---->微信服務(wù)器---->服務(wù)端URL---->解析三級域名---->ngrok服務(wù)器--->跳轉(zhuǎn)到本地ngrok服務(wù)8090---->8090是一個ng服務(wù)
  2. ng服務(wù)----->以/wx/開頭則跳轉(zhuǎn)到wxjava服務(wù)器處理來自微信服務(wù)器的消息纽绍。
  3. ng服務(wù)----->非/wx/開頭則跳轉(zhuǎn)到web應(yīng)用服務(wù)

小結(jié)

有了這樣的內(nèi)網(wǎng)穿透服務(wù)蕾久,在開發(fā)調(diào)試公眾號就方便多了。

參考:
https://blog.csdn.net/weixin_39496190/article/details/80385263

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拌夏,一起剝皮案震驚了整個濱河市僧著,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌障簿,老刑警劉巖盹愚,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異站故,居然都是意外死亡皆怕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門西篓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愈腾,“玉大人,你說我怎么就攤上這事岂津∈疲” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵吮成,是天一觀的道長橱乱。 經(jīng)常有香客問我,道長粱甫,這世上最難降的妖魔是什么泳叠? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮茶宵,結(jié)果婚禮上析二,老公的妹妹穿的比我還像新娘。我一直安慰自己节预,他們只是感情好叶摄,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著安拟,像睡著了一般蛤吓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糠赦,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天会傲,我揣著相機與錄音锅棕,去河邊找鬼。 笑死淌山,一個胖子當著我的面吹牛裸燎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泼疑,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼德绿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了退渗?” 一聲冷哼從身側(cè)響起移稳,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎会油,沒想到半個月后个粱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡翻翩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年都许,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫂冻。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡梭稚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出絮吵,到底是詐尸還是另有隱情弧烤,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布蹬敲,位于F島的核電站暇昂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伴嗡。R本人自食惡果不足惜急波,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘪校。 院中可真熱鬧澄暮,春花似錦、人聲如沸阱扬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽麻惶。三九已至馍刮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窃蹋,已是汗流浹背卡啰。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工静稻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匈辱。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓振湾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親亡脸。 傳聞我的和親對象是個殘疾皇子押搪,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容