一分鐘教你學會搭建ngrok內網穿透

前言

最近因爲項目開發的須要,要和第三方對接一些接口。最開始是想直接部署在公網進行對接,後面發現重複部署以及不利於調試太浪費時間,對接過程當中甚至會堵塞在某個地方許久。最後仍是決定經過代理映射到內網,方便調試和對接。node


搭建前提

1.須要一臺公網服務器。這個能夠租一臺雲服務器來解決。 2.須要一個域名。本人租個.cn的域名一年也只要個30塊錢左右。linux


環境依賴

yum install build-essential golang mercurial git
git clone https://github.com/tutumcloud/ngrok.git ngrok
//安裝nginx你也能夠選擇本身編譯
yum install -y nginx 
//設置環境變量,這裏的hcyhj.cn是你的域名,須要本身修改
export NGROK_DOMAIN="hcyhj.cn"
複製代碼

配置ngrok

//進入到你clone下來的ngrok目錄中
cd ngrok
//執行下面的命令(能夠一個字都不用更改,大概就弄證書和祕鑰吧。。。)
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
//將生成的文件copy過去
cp base.pem assets/client/tls/ngrokroot.crt
複製代碼

編譯客戶端和服務端

//編譯linux服務端 linux客戶端
make release-server release-client
//編譯windows客戶端
GOOS=windows GOARCH=amd64 make release-client
複製代碼

這裏編譯好的文件會存放在ngrok/bin目錄中。如圖: nginx

ngrok.png


配置域名解析

這個根據不一樣的域名商的引導去配置便可。 git


nginx配置文件的配置

//在nginx配置文件nginx.conf中添加以下配置
server {
        listen 80;
        server_name *.hcyhj.cn  hcyhj.cn ;
        location / {
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header Host  $http_host:8081;
                        proxy_set_header X-Nginx-Proxy true;
                        proxy_set_header Connection "";
                        proxy_pass      http://127.0.0.1:8081;
        }
    }
複製代碼

配置完啓動nginx。github


啓動ngrok

//注意:這裏的httpAddr對應的端口須要和nginx配置中proxy_pass 和proxy_set_header端口一致    
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="hcyhj.cn" -httpAddr=":8081" -httpsAddr=":8082"
複製代碼

windows客戶端

從上圖(ngrok.png)位置拉取nginx.exe放到windows上,在同目錄下新建配置文件,隨便弄個名字便可。例如ngrok.conf。golang

//在配置文件中加入代碼,這裏域名hcyhj.cn須要和上述環境變量配置的域名一致,端口爲4443,服務端ngrokd啓動有個默認通信端口4443對外開放
server_addr: hcyhj.cn:4443
//不使用ssl證書
trust_host_root_certs: false
複製代碼

新建bat文件,加入代碼windows

//注意:subdomain是你要使用的域名和端口
cd %cd%
ngrok -config=ngrok.conf -subdomain=www 8087 
複製代碼

配置完成執行bat腳本啓動ngrok客戶端。而後在瀏覽器輸入 www.hcyhj.cn (這裏的hcyhj.cn是你本身的域名)便會跳轉到你本地8087端口的應用上。這裏能夠啓用多個,只須要改配置文件的subdomain,例如改爲subdomain=aa 8081,便訪問 aa.hcyhj.cn 映射到本地的8081端口的應用上。依次類推。瀏覽器


小知識點

部署好後,發現linux上的ngrok服務器不能在後臺運行。後面通過google找到一個解決辦法,啓動時加入參數 -log 便可,例如:bash

nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="hcyhj.cn" -httpAddr=":8081" -httpsAddr=":8082" -log=stout &
複製代碼

End

相關文章
相關標籤/搜索