簡單搭建ngrok服務器,實現內網穿透

摘要: 快速搭建ngrok服務器,或者直接運行我製作的ngrok服務器的鏡像來啟動

為啥搭建ngrok服務器

ngrok 是一個反向代理工具,我們可以直接下載官網的客戶端使用,但是因為官網服務器在國外,比較慢,而且免費版不支持綁定二級域名。

需要準備什麼

  • 公網的linux服務器(最好是centos7,一步通過)

  • 獨立域名


如果對docker熟悉的話可以直接運行我製作的ngrok服務器的鏡像來啟動https://github.com/jueying/docker-ngrok-server

步驟

1. 安裝git, golang和openssl

yum install -y git golang openssl

git版本和golang版本不能太舊,centos7默認安裝git1.8.3,go1.8.3

2. clone ngrok項目到本地

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

3. 生成證書

# 這裡替換為自己的獨立域名export NGROK_DOMAIN="huahongbin.cn"#進入到ngrok目錄生成證書cd /usr/local/ngrok# 下面的命令用於生成證書openssl genrsa -out rootCA.key 2048openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pemopenssl genrsa -out device.key 2048openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csropenssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000# 將我們生成的證書替換ngrok默認的證書cp rootCA.pem assets/client/tls/ngrokroot.crtcp device.crt assets/server/tls/snakeoil.crtcp device.key assets/server/tls/snakeoil.key 

4. 編譯不同平臺的服務端和客戶端

# 編譯64位linux平臺服務端GOOS=linux GOARCH=amd64 make release-server# 編譯64位windows客戶端GOOS=windows GOARCH=amd64 make release-server# 如果是mac系統,GOOS=darwin。如果是32位,GOARCH=386

執行後會在ngrok/bin目錄及其子目錄下看到服務端ngrokd和客戶端ngrok.exe

5. 啟動服務端

# 指定我們剛才設置的域名,指定http, https, tcp端口號,端口號不要跟其他程序衝突./bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80" -httpsAddr=":8082" -tunnelAddr=":443"

6. 啟動客戶端

將ngrok.exe拷貝到本地文件夾中(可以用winscp),並在文件夾新建配置文件ngrok.cfg,內容如下:

server_addr: "huahongbin.cn:443"trust_host_root_certs: false

域名替換為自己的獨立域名,端口替換為啟動ngrok服務器設置的tunnel端口。

然後在cmd中使用以下命令啟動:

ngrok.exe -subdomain=jueying -config=ngrok.cfg 80

80即為你要代理的本地端口

在瀏覽器中輸http://127.0.0.1:4040 可以看到具體的請求信息。

常見問題

  • 編譯時在下面步驟卡主go get gopkg.in/yaml.v1這是因為Git版本太低,請將服務器git版本升級到1.7.9.5以上。

  • 因為ngrok首次編譯時需要在國外網站下載一些依賴。可能會很慢甚至timeout。多嘗試幾次,或者你懂得。


分享到:


相關文章: