2012-03-05 106 views
1

我剛剛安裝我的node.js應用程序在安全組快速啓動並啓用http端口的Windows微型實例。EC2-無響應的http請求

我在實例中打開了防火牆,並打開了入站和出站端口80,443。

儘管如此,我的http請求沒有被node.js應用程序所支持。 從日誌中我看到該應用程序已連接到redis和mongo,並且socket.io也已啓動。

怎麼了?爲什麼http請求被阻止?

回答

0

終於發現問題了。

我介紹log4js和綜合這與快遞,如,

app.use(log4js.connectLogger(logger, { level: log4js.levels.ERROR })); 

這造成的問題。不知何故,這是失敗的。看起來它只適用於DEBUG。在評論這個之後,它開始工作。奇怪!

0

您是否有機會在之上構建您的應用程序示例網絡服務器目前也在Node.js主頁上顯示?樣品目前看起來像這樣:

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 

無論哪種方式,您的Node.js服務器可能根本無法在正確的端口/主機名組合聽 - 的實例Web服務器偵聽端口1337(而不是常規HTTP端口80)和僅在本地主機上(而不是在分配給您的EC2實例的地址私有/內部IP)。

如果這些假設條件,可以通過相應地調整listen()聲明實現你的目標,看到我的回答有關問題Node.js Amazon EC2 example webserver - no result延長的討論,包括關於靈活運用server.listen(port, [hostname], [callback])的一對夫婦的變化。

祝你好運!

+0

您可以嘗試的其他方法是暫時打開0.0.0.0/0的所有端口,以查看問題是否存在於安全組中,或者存在實例問題。 – bwight 2012-03-05 23:01:44

+0

@Steffen,我的應用程序基於express,僅在端口80上偵聽。我在我的機器上進行了本地測試,它工作得很好。但是不知道爲什麼它不在EC2 – user644745 2012-03-06 02:41:30

+0

@bwight中工作,我也打開了所有TCP端口爲0.0.0.0/0。它仍然沒有迴應。我認爲這可能與Windows 2008防火牆設置有關。最初ping不工作,當我在防火牆中更改了一些設置時,ping開始工作。不知道HTTP有什麼問題? – user644745 2012-03-06 02:43:03