ngrok是一個反向代理工具,1.x版本源碼開源;能夠本身搭建一個服務來使用,將本地的web或tcp服務經過公共端口和外部創建一個安全通道,這樣就能夠經過外網直接訪問本地對應的服務,在進行微信等測試開發的時候很是有用
html
環境
Linux Centos7gitgolangopenssl
安裝golang
一、下載golanglinux
wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz
cd ~ls
/usr/local
tar -C /usr/local -xzf go1.11.4.linux-amd64.tar.gzgithub
三、添加環境變量golang
vim /etc/profile
在最後一行添加以下內容web
export PATH=$PATH:/usr/local/go/bin
source /etc/profile
安裝ngrok
/usr/local/ngrok
git clone https://github.com/inconshreveable/ngrok.git /usr/local/ngrok
二、配置
cd /usr/local/ngrok # 臨時設置域名 後面使用 export NGROK_DOMAIN="<youdomain>.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 # 將生成的證書替換ngrok默認的證書 # 先備份 cp assets/client/tls/ngrokroot.crt assets/client/tls/ngrokroot.crt.bak cp assets/server/tls/snakeoil.crt assets/server/tls/snakeoil.crt.bak cp assets/server/tls/snakeoil.key assets/server/tls/snakeoil.key.bak # 替換 cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key
三、編譯不一樣平臺的服務端和客戶端
# 編譯64位linux平臺服務端 GOOS=linux GOARCH=amd64 make release-server # 編譯64位windows客戶端 GOOS=windows GOARCH=amd64 make release-client # 若是是mac系統,GOOS=darwin。若是是32位,GOARCH=386
注:
- Linux 平臺 32 位系統:GOOS=linux GOARCH=386
- Linux 平臺 64 位系統:GOOS=linux GOARCH=amd64
- Windows 平臺 32 位系統:GOOS=windows GOARCH=386
- Windows 平臺 64 位系統:GOOS=windows GOARCH=amd64
- MAC 平臺 32 位系統:GOOS=darwin GOARCH=386
- MAC 平臺 64 位系統:GOOS=darwin GOARCH=amd64
- ARM 平臺:GOOS=linux GOARCH=arm
- 編譯的是不帶release的版本,還能夠經過-tlsCrt和 -tlsKey選項來指定證書文件的位置
binngrokdwindowswindows_amd64/ngrok.exe
四、啓動服務端
./ngrokd -domain="<youdomain>.com" -httpAddr=":10001" -httpsAddr=":10002" -tunnelAddr=":10003"
&-domain-httpAddr..com:10001-httpsAddr..com:10002-tunnelAddr-log-log-levelDEBUG、INFO、WARNING、ERRORfirewall-cmd firewall-cmd --permanent --zone=public --add-port=10001-10003/tcp
出現如下消息說明啓動成功
附錄1 參考文檔
https://luozm.github.io/ngrok
https://my.oschina.net/imjueying/blog/1786737
http://ngrok.cn/docs.html
http://www.imawen.com/content.html?id=26
附錄2 配置示例 YAML格式
server_addr: <youdomain>.com:10003 trust_host_root_certs: false log: ngrok.log tunnels: test: addr: 10001 proto: http
windows
(cmd).exe
ngrok.exe -subdomain=test -config="ngrok.yml" 8080
http://test..com:10003
80ngrok801000180nginx