很多情況下,我們需要對客戶延時做好的demo、服務器放在家裏或者公司沒有公網,怎麼實現外網訪問?
這是我本地的一個演示地址,我要在外網訪問需要怎麼操作呢?
通過路由器的端口轉發實現
1、進入路由器選擇端口轉發
2、添加轉發信息
添加端口轉發信息,外部端口使用 10000 內部端口是 80,也就是說外網通過 ip:10000 訪問的時候實際上訪問到的是 192.168.1.175:80 這個ip的80端口
在路由器裏面可以看到我的外網ip,或者在 http://www.ip138.com 也可以看到
只要讓在外網的人通過 http://123.121.142.122:10000/ 就可以訪問到我 192.168.1.175:80 這個端口裏面的php文件了
如果想要進行 ssh端口 或者 3389 遠程訪問也是一樣的方式操作。
通過路由器的dmz方式實現
這裏填寫了我一個樹莓派的地址,然後我通過在騰訊雲服務器使用ssh配合我的外網ip登陸樹莓派。只需要在騰訊雲的服務器上輸入以下命令就可以登陸我家裏的樹莓派。
ssh [email protected]
通過上圖已經可以看到我通過騰訊雲的服務器使用ssh登陸到了我的樹莓派裏面。這種是在一級運營商拉的網線有公網ip的情況下可以通過路由器實現的外網訪問內網服務。
注意:在做http服務的時候80端口是不能外網訪問的,所以可以通過其他端口訪問,例如我就用了10000端口在外網訪問,但是在開發微信的時候這點還是不方便,微信只接受80或者443
這些功能在你接入一級運營商的時候是可以用的,但是遇到二級運營商或者小區寬帶的時候,這就很有心無力了。因爲你從這些運營商得到的ip是一個內ip,你自己路由器相當於一個二級路由器,所以在二級路由器端口轉發但是在一級路由器並沒有,也就是說類似住宅樓一樣,你把你加的房門打開了,但是一樓大廳的大門沒有打開,外面的人還是進不來。
那我們還有沒有什麼別的辦法能讓外網不需要加端口直接訪問到80呢?答案是肯定有的。最簡單的辦法是通過 Sunny-Ngrok 實現,僅需要在平臺註冊賬號密碼設置好映射的信息,只要一條命令就能實現外網訪問內網了。
1、打開 註冊界面 註冊一個賬號
2、開通隧道
由於網站提供了Ngrok和Frp兩種服務,因此用戶需要自己選擇想要開通的類型。
注意:詳細閱讀網站彈出來的提示,因爲很重要
注意:詳細閱讀網站彈出來的提示,因爲很重要
注意:詳細閱讀網站彈出來的提示,因爲很重要
3、填寫隧道信息
根據自己實際情況填寫
隧道開通之後不能更換協議和服務器
隧道開通之後不能更換協議和服務器
隧道開通之後不能更換協議和服務器
4、下載客戶端
返回首頁下載客戶端
遇到問題的時候可以觀看使用教程哦,裏面提供了比較詳細的教程。選擇自己開通的服務類型和操作系統版本下載。
網站有兩種客戶端,記得要匹配自己的開通服務類型
網站有兩種客戶端,記得要匹配自己的開通服務類型
網站有兩種客戶端,記得要匹配自己的開通服務類型
對於開發者建議開通Ngrok、因爲在做微信開發或者支付異步回調的時候可以通過127.0.0.1:4040 實現請求查看和重發,對於開發人員來說比上傳代碼到服務器和寫日誌查看日誌更省心省力省時間。
5、啓動隧道
一定要觀看官網教程,注意不通的服務類型有不通的啓動方式區分,Windows進入cmd命令啓動不是雙擊;Linux通過終端啓動。
這個是我在平臺上的配置
這個是我在mac的啓動方式
啓動成功的界面是這樣的,我通過上面顯示出來的地址就可以訪問到我的路由器了,因爲我的路由器ip是192.168.1.1 我這裏隧道映射的ip也是 192.168.1.1
這樣就可以看到已經實現了外網訪問內網的機器了。
如果是開發者通過 http://127.0.0.1:4040 可以得到更豐富的功能。
可以看到右邊有一個再次請求和下面在內網返回的信息都已經返回回來了,在做異步支付的時候就可以在本地開發了,並且可以看到代碼是哪裏報錯了。