Localtunnel 是一個能夠讓內網服務器暴露到公網上的開源項目。nginx
$ npm install -g localtunnel
假設本地服務器在 8000 端口,咱們能夠經過下面的命令把本地服務器暴露到公網中git
$ lt --port 8000 your url is: https://uhhzexcifv.localtunnel.me
經過上面的命令,咱們不須要作其餘設置就能夠經過 https://uhhzexcifv.localtunnel.me
來訪問咱們本地服務器了。github
因爲 localtunnel.me
是國外的服務器,訪問速度有時候不太理想,這時候咱們能夠本身搭建 localtunnel 的服務端。shell
$ git clone git://github.com/defunctzombie/localtunnel-server.git $ cd localtunnel-server $ npm install
以監聽 2000 端口爲例:npm
# 直接使用 $ bin/server --port 2000 # 配合 pm2 使用 $ pm2 start bin/server --name lt -- --port 2000
啓動服務端程序後,咱們只要在使用客戶端 lt
時加上 --host
參數,就能夠指定服務端了。安全
# host 後面不要加 / $ lt --host http://helloworld.com:2000 --port 8000 your url is: http://jhuyudvlum.helloworld.com:2000
這樣,咱們就能夠經過本身的代理服務器來訪問本地服務器了,不用通過第三方代理服務器,沒必要擔憂代理服務器的安全問題。服務器
在 Github 上面有一份 Nginx 的配置,咱們能夠直接使用,或者按照本身的須要作些修改。dom
有時候,用隨機字符串做爲子域名並非一件好事,咱們可能須要固定的域名來訪問本地服務器。這時,lt --subdomain
就能夠派上用場了。url
# subdomain 限制長度爲 4 ~ 63 $ lt --host http://helloworld.com:2000 --port 8000 --subdomain mysubdomain your url is: http://mysubdomain.helloworld.com:2000
看到了嗎?經過 --subdomain
,咱們就能夠指定本身喜歡的子域名了。代理
然而,若是咱們經過 --host
來指定子域名,會發生什麼?
$ lt --host http://mysubdomain.hello.com --port 8000 Error: localtunnel server returned an error, please try again
就算配置了 Nginx 的反向代理,你依然會獲得這個錯誤。能夠查看 #21 和 #31 來看更多的細節。
要解決這個問題,最簡單的就是 不用 --host
來指定子域名,而用 --subdomain
來指定。
其實有好幾個 pull request 都嘗試去解決這個問題的,但不知道什麼緣由,做者一直沒去合併。或者再過一段時間,這個問題就會解決,到時候, localtunnel 就會變得更加好用了。
http://scarletsky.github.io/2016/01/17/localtunnel-usage/