2016-03-22 30 views
0

我在aws上運行apache和ubuntu服務器。爲什麼在向文件添加主機名時node.js文件停止工作?

下面的文件都會運行,但是當我訪問服務器時,只有最上層的文件返回Helloworld。這是爲什麼?

var http = require('http'); 

var port = 3000; 

var server = http.createServer(function(req, res) { 
    console.log(req.headers); 

    res.writeHead(200, { 'Content-Type': 'text/html' }); 
    res.end('<h1>Hello World</h1>'); 
}); 

server.listen(port); 

底部文件運行但沒有打到服務器時出現錯誤。我嘗試使用服務器的IP替換主機名,我也嘗試使主機名127.0.0.1不起作用。我得到的錯誤是

"This site can't be reached, <ip> refused to connect, ERR_CONNECTION_REFUSED" 

是服務器的IP地址。

var http = require('http'); 

var hostname = 'localhost'; 
var port = 3000; 

var server = http.createServer(function(req, res) { 
    console.log(req.headers); 

    res.writeHead(200, { 'Content-Type': 'text/html' }); 
    res.end('<h1>Hello World</h1>'); 
}); 

server.listen(port, hostname); 

乾杯

+0

你想通過包含'hostname'參數來解決什麼問題?您可以將其保留,然後服務器將響應在指定端口上對此服務器的任何傳入請求。很明顯,如果你使用'localhost'或'127.0.0.1',那麼只有來自同一個盒子的連接纔可能匹配。 – jfriend00

+0

我通過刪除主機名得到它的工作,謝謝。我之所以這麼做,是因爲我在網上學習一個教程,這個人正在從他的本地機器上工作。最初我離開了主機名,但我遇到了錯誤,所以我試圖添加/刪除它。我想我在刪除它的時候犯了錯誤,因爲它仍然不想工作。我添加它的原因是因爲我在stackoverflow的其他地方讀過,我應該添加它。我顯然被誤解了。感謝您的評論,這是一個很大的幫助隊友。 –

回答

3

如果您正在收聽本地主機上,你必須讓來自同一臺機器/服務器來自外部的請求並沒有。

+0

如何從同一臺機器發出請求?我通過膩子連接到aws。如果我打開另一個膩子窗口並輸入「curl 」,它不起作用。如果我刪除localhost參數,它會工作。 –

+0

因爲我不認爲亞馬遜將IP直接分配給實例上的接口,所以在同一系統上本地發出請求時,您可能必須使用'localhost'? – mscdex

相關問題