本文收錄在企業項目實戰系列
一、概念用途
1、介紹
ngrok是非常流行的反向代理服務,可以進行內網穿透,支持80端口以及自定義tcp端口轉發。這樣你就可以運行本地的程序,而讓別人通過公網訪問了
ngrok 是一個反向代理,通過在公共的端點和本地運行的 Web 服務器之間建立一個安全的通道。ngrok 可捕獲和分析所有通道上的流量,便於后期分析和重放
2、為什么要使用ngrok?
作為一個Web開發者,我們有時候會需要臨時地將一個本地的Web網站部署到外網,以供他人體驗評價或協助調試等等,通常我們會這么做:
① 找到一台運行於外網的Web服務器
② 服務器上有網站所需要的環境,否則自行搭建
③ 將網站部署到服務器上
④ 調試結束后,再將網站從服務器上刪除
只不過是想向朋友展示一下網站而已,要不要這么麻煩,累感不愛╰(`□′)╯
3、有了ngrok之后,世界是如此的美好
② 運行命令ngrok -authtoken 你的授權碼 80,80是你本地Web服務的端口,而之后ngrok會記住你的授權碼,直接ngrok 80就OK了
③ 會得到一串網址,通過這個網址就可以訪問你本地的Web服務了
二、安裝
1、官網下載,解包
地址https://link.jianshu.com/?t=https://ngrok.com/download下載, 解壓
2、rz 並解包
unzip ngrok-stable-linux-amd64.zip -d /app/
三、官網注冊賬戶,獲取隧道authtoken
1、注冊賬戶
https://dashboard.ngrok.com/user/signup
2、登錄並獲取隧道authtoken,且登錄后也有詳細的教程
3、在linux 上認證隧道authtoken
[root@centos app]# ./ngrok authtoken AuQ3TpQG35JL1HcK5WTM_7666C7RTfjYcZtoQyRHsG
會在/root/.ngrok2/ngrok.yml 下記錄隧道authtoken
4、./ngrok -h 可以查詢命令幫助
每個命令的詳細幫助可以通過'ngrok help <command>'來獲得。
打開http:// localhost:4040 for ngrok的Web界面來檢查流量。
ngrok http 80#用於端口80 Web服務器的安全公共URL
ngrok http -subdomain = baz 8080#port 8080可在baz.ngrok.io
ngrok http foo.dev:80#隧道到主機:端口而不是本地主機
ngrok tls -hostname = foo.com 443#將foo.com的TLS流量傳送到端口443
ngrok start foo bar baz#從配置文件啟動隧道
四、使用ngrok
1、先准備一個web服務和頁面
2、開啟ngrok,測試http協議 80端口
(1)開啟ngrok 服務,會隨機給一個地址,在公網上訪問這個地址,即可訪問到內網的web服務
[root@centos app]# ./ngrok http 80
3、外網訪問,成功
4、為了安全也可以設置登錄賬戶和密碼
[root@master app]# ./ngrok http -auth="along:along" 80
5、測試tcp協議 22端口
(1)在內網開啟ngrok,指定tcp 22端口
[root@master app]# ./ngrok tcp 22
(2)公網物理機測試
[root@along html]# ssh root@0.tcp.ngrok.io -p11053
五、ngrok 其他功能
1、自定義子域名
因為自動生成的會隨機改變,如果想要固定訪問域名地址,需要自定義,這個功能需要付費!!!!!!!
舉例,新開一個隧道,以`along` 為名稱,后面跟Web端口 ngrok http -subdomain=along 8080
① 打開ngrok的面板Reserved(保留的)標簽欄, 注冊一個想要保留的域名xxx.com
② 點擊CNAME按鈕,獲取DNS CNAME record,也就是后面的xxxx.ngrok.io
ngrok http -hostname=xxxx.com 8000
2、關閉訪問檢測
ngrok http -inspect=false '端口號'
3、強制訪問網址為Http或者https
ngrok http -bind-tls=false site.dev:80
ngrok http -bind-tls=true site.dev:80