前言
如果只是網站臨時訪問只用官方的ngrok自動映射即可
如果是長久使用,推薦使用frp,因為ngrok這東西,官方的是2.x 開源的是1.x 這是一個商業運作軟件。
ngrok映射http協議
無需註冊賬戶,下載即用
通過官網下載
https://ngrok.com/download
運行
ngrok http 80
終端反饋
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Version 2.2.4Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://79ab83c9.ngrok.io -> localhost:8080Forwarding https://79ab83c9.ngrok.io -> localhost:8080Connections ttl opn rt1 rt5 p50 p90 24 0 0.00 0.01 0.00 0.00
http://79ab83c9.ngrok.io
就是我們的外網地址
瀏覽器打開 Web入口http://127.0.0.1:4040
.
此時如果使用其他設備訪問Forwarding後面的地址,就會在Web頁面上面查看到當前訪問的請求細節.
服務器搭建
服務器以centos7為例
環境配置
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettexurl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ golang
下載ngrok服務端
git clone https://github.com/inconshreveable/ngrok.git
編譯準備
cd ngrokexport NGROK_DOMAIN="ngrok.9sb.org"openssl genrsa -out rootCA.key 2048openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048openssl 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 5000cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
編譯
#win服務端GOOS=windows GOARCH=386 make release-server
#win客戶端GOOS=windows GOARCH=386 make release-client
#linux服務端GOOS=linux GOARCH=386 make release-server
#linux客戶端GOOS=linux GOARCH=386 make release-client
服務端運行
注意防火牆開放對應的端口
我們只需要以下三個文件
ngrokd 在bin目錄裡
server.key server.crt在當前目錄
在這三個文件所在的目錄中可以直接啟動ngrokd
ngrokd -tlsKey="server.key" -tlsCrt="server.crt" -domain="ngrok.9sb.org" -httpAddr=":1000" -httpsAddr=":1001" -tunnelAddr=":1002"
-domain使用的域名 -httpAddr HTTP端口 -httpsAddrHTTPS端口 -tunnelAddr隧道端口
客戶端運行
我們的目的是把主機的80端口映射到服務器的1003端口上
下載編譯好的ngrok.exe,在bin目錄裡
新建配置文件
ngrokyml
server_addr: "ngrok.9sb.org:1002"trust_host_root_certs: falsetunnels: ssh: remote_port: 1003 proto: tcp: 80
在ngrok.exe和ngrokyml的目錄下右鍵運行powershell
.\ngrok.exe -config=ngrokyml start ssh
驗證
閱讀更多 9Sblog 的文章