這篇文章花了好幾天,系統(tǒng)地梳理出了映射公網(wǎng)的幾種方式。雖然是針對微信開發(fā)的外網(wǎng)服務(wù)器來尋找解決方案,但這個知識梳
理可能會在其他地方也受益。平常我也有用TeamViewer,在搜集資料的過程中也知道了其大致工作原理。還有一些免費(fèi)好用的反向代理軟件,可能會在后
頭派上用場。
這篇干貨分享在此,轉(zhuǎn)載請注明:http://blog.csdn.net/sadshen/
一、映射公網(wǎng)的兩種方式介紹
1 動態(tài)域名解析+端口映射(公網(wǎng)環(huán)境)
動態(tài)域名解析,俗稱DDNS。目前提供這種服務(wù)的廠商還挺多,我目前知道有幾家:
Oray花生殼
PubYun公云
No-IP
DynDNS
如果你對一個公網(wǎng)IP有權(quán)限,那就可以采用這種方式。你的路由器的WAN口就是寬帶,那這種方式就適用。DDNS的作用就是將WAN口分配到IP與域名綁定在一起,訪問這個域名,相當(dāng)于就訪問到了你的WAN口。于是你只要在路由器上做一個端口映射即可。
此種方式的局限性可能就是大部分運(yùn)營商都屏蔽了80等常用端口,所以做微信開發(fā)要用到80端口的話這種方式就不大適合。

2 反向代理(內(nèi)網(wǎng)環(huán)境)
如果你在一家公司上班,公司內(nèi)部可能分了好幾級的路由,就比如我,那第一種方式就走不通。寫零java基礎(chǔ)搞定微信Server_3:搭建微信
Server本地開發(fā)環(huán)境那晚弄到半夜就是這個原因。哦,我當(dāng)然不是在加班。我在家里,房間用了一個二級路由,那晚真真是搞死寶寶了。
下面這兩張圖可以快速了解反向代理。


我們是采用本機(jī)與反向代理server組建網(wǎng)絡(luò)(相當(dāng)于一個虛擬局域網(wǎng)),訪問反向代理server的數(shù)據(jù)都被轉(zhuǎn)發(fā)到本機(jī)。
從有簡單一點(diǎn)的將內(nèi)網(wǎng)映射到外網(wǎng)的工具嗎?這個帖子中收獲良多。作者沙渺告訴我們:
實(shí)際上ngrok就是一種僅僅針對http單一用途的代理服務(wù)。ngrok的原理很可能并不是真正的內(nèi)網(wǎng)穿透,而是真的老老實(shí)實(shí)的充當(dāng)反向代理,承擔(dān)所有實(shí)際發(fā)生的流量。
這方面的替代服務(wù)有l(wèi)ocaltunnel.me和pagekite等。
內(nèi)網(wǎng)穿透的應(yīng)用中,通訊雙方必然首先對一個公網(wǎng)服務(wù)器主動發(fā)起連接。。。
各種相關(guān)的軟件都是如此,例如TeamViewer、Oray向日葵乃至QQ遠(yuǎn)程協(xié)助等。就說這個ngrok,其實(shí)也是需要通訊雙方連接ngrok中心服務(wù)器,甚至中心服務(wù)器的某些高級功能還提供付費(fèi)計劃對吧。
于是乎,我們映射公網(wǎng)的工具,除了ngrok之外,又多了localtunnel.me和pagekite。
二、反向代理的實(shí)現(xiàn)
1 自己創(chuàng)建反向代理服務(wù)
用這種方式,成本較高,需要三樣?xùn)|西:
服務(wù)器
代理服務(wù)端的監(jiān)聽轉(zhuǎn)發(fā)程序
目的服務(wù)端(同時也是面向代理服務(wù)器的客戶端)的主機(jī)轉(zhuǎn)發(fā)程序
如果你有服務(wù)器,那自己寫個轉(zhuǎn)發(fā)工具應(yīng)該是可以實(shí)現(xiàn)的。比較省力的方式是參考ngrok的源碼。ngrok是應(yīng)該濃墨重彩寫一番,開源,自由,github上開源了V1.0版本
https://github.com/inconshreveable/ngrok/
一個在自己VPS搭建ngrok的實(shí)例,https://imququ.com/post/self-hosted-ngrokd.html
很多人和我一樣,現(xiàn)階段就想做一個微信開發(fā),那自己花大精力去實(shí)現(xiàn)一個反向代理顯然不值得。這時候就得從已有的軟件中進(jìn)行選擇。運(yùn)行穩(wěn)定,成了最主要考慮的因素。
2 廠商服務(wù)
Ngrok比較出名,提供免費(fèi)服務(wù),但可惜容易被墻。那解決方式就是墻內(nèi)也搞Ngrok。由于我所知有限,僅僅把目前知道的幾家列出來。(這里我可能先入為主了,因?yàn)槲野堰@些廠商粗暴地分為了Ngrok和非Ngrok,忽略了其他廠商們所做出的努力。)
Ngrok
免費(fèi),但會被墻。
Tunnel
昨晚測試,訪問不了。
localtunnel
可用
pagekite
可用
新花生殼
開通內(nèi)網(wǎng)映射,映射主機(jī)即可。目前免費(fèi)版也要收取8塊錢的費(fèi)用就是了。
NAT123
功能同花生殼,但似乎是免費(fèi)的。
我貪圖省事,直接花錢認(rèn)證了花生殼,后面四種就沒再處理了。看到別人用localtunnel和pagekite有成功的,所以我就不搬了。