nginx與ngrok不在同一臺機器,如何用阿里雲搭建自用的內網穿透服務?

衆所周知,做微信公衆號開發時,調試需要接收來自騰訊的服務器請求。因爲我們的開發服務器都是在內網,所以騰訊的服務器請求無法通過互聯網請求到自己的內網服務器上,所以就需要ngrok做一個內網穿透。

如果你剛好有自己的服務器,又想嘗試自己折騰一番,可以參照以下資料做ngrok內網轉發。我也是按照下面的資料自己搭建成功的,而且寫的比較詳細。強烈推薦。

參考資料:
https://blog.csdn.net/diaobatian/article/details/100890037
https://www.jianshu.com/p/f5c2a55e77bd

如果你沒有自己的服務器,又需要做穩定的內網穿透服務,可以選擇收費的。爲了避免廣告嫌疑,而且我也沒用過,所以就不做推薦了。

我在搭建的過程中,受限於環境,因爲自己比較喜歡折騰。我的nginx和ngrok不在同一個服務器,我也把它搭建成功了,之所以能搭建成功,首先得理解ngrok+nginx的數據傳輸過程。

image.png

黑色箭頭表示請求、灰色箭頭表示響應數據。

如果理解不了這個,那麼nginx+ngork分開兩臺服務器時,就會出錯,無法實現。

ngrok是用go語言寫的,所以需要雲服務器安裝go語言的環境。
按上面的資料安裝完成後,啓好ngrok服務後,我本機的客戶端一直無法連上ngrok服務。

多次嘗試後才知道,騰訊到nginx走的http請求,nginx到ngrok走還是http請求,而ngrok到本機,以及本機回傳給ngrok。走的卻不是http請求,不要問我爲什麼知道,因爲我自己搭建的過程中測試,用nginx轉發請求到ngrok的tunnelchannel結果是無法連通。

後來用了一個辦法,將接收請求的域名和響應請的域名分開。怎麼操作呢?

比如我現在的域名是example.com.

我響應請求的域名設置的是ngrok.example.com。

接收請求的域名是*.ngrok.example.com。

這塊一定要區別開。因爲我用ngrok.example.com:4443啓動客戶端時,會去找對應域名的ip,如果沒分開當然好說,一旦分開後,如果這兩個域名ip不一樣,而你解析成一樣了,那麼將會帶來災難。

兩個解決辦法,一個就是將ngrok.example.com解析到ngrok的服務地址上。

另外一個辦法就是將ngrok.example.com對應的ip寫到自己的host裏面。這個辦法測試過可以用,上面那辦法是我想的,沒有測試過,有興趣的朋友可以測試一下。

文章記錄就到這了,如果你在搭建過程中遇到什麼問題,可以來這裏聯繫我。我將在力所能及的範圍內幫你解決。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章