2016-09-23 65 views
1

我正在尋找使用Node.js在專用PC上託管Web服務器,但我似乎無法從我的本地網絡以外的任何地方訪問它。外部你好世界服務器節點js

從我在網上找到的東西,似乎我所要做的就是在不同的網絡上的瀏覽器中輸入externalIp:port,我應該看到我的Hello World,但是我不能在不暴露我的本地主機的情況下工作通過像ngrok這樣的東西。

有誰知道我怎麼能從互聯網上的外部電腦訪問我的節點服務器,而不只是本地主機?

下面是步驟來重現

require("http").createServer(function(request, response){ 
    response.writeHeader(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World!"); 
    response.end(); 
}).listen(8080); 
  1. 「節點server.js」 - 「你好!世界上非常簡單的服務器託管在端口8080上,僅僅發回應
  2. 在我的機器上檢查localhost:8080,看到「Hello World!」工作
  3. GET externalIP從ipchicken.com
  4. 檢查 'externalIP':外部設備(電話,網絡DIFF PC)上的8080,永遠不會奏效

也許有我丟失的東西,但我認爲這是非常簡單的

+0

不知道你的網絡環境是什麼樣的,但如果你是一個家庭路由器後面你需要設置端口轉發。 – esqew

+0

我認爲一個問題可能是端口轉發,有時最常見的問題是防火牆處於打開狀態。如果你的環境是linux,那麼你需要停止你的iptables,並在Windows防火牆 – selftaught91

回答

0

您需要綁定的服務給所有可用IP接口,改變你聽8080:

require("http").createServer(function(request, response){ 
    response.writeHeader(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World!"); 
    response.end(); 
    }).listen(8080, "0.0.0.0") 
0

假設你有一個STA ndard家庭網絡設置,你不能只發送一個請求到你的外部IP地址,並期望它神奇地到達你的機器。該請求會觸發你的路由器,路由器不知道該如何處理它。您需要配置您的路由器將端口8080上的請求轉發到本地地址(可能類似於192.168.0.x)。即使這可能還不夠。您可能需要在您的計算機上配置軟件防火牆,以允許該端口上的傳入請求。希望這有助於:)

+0

因此,我配置了端口轉發和防火牆,現在我可以看到通過Wireshark發送和接收的2個數據包,這太棒了!但是,我注意到大量的虛假重傳(來自我的手機和我的電腦),而且手機上仍然沒有「Hello World」。所以溝通不在那裏:/ – Stephen