我在Amazon EC2上有一个新的Ubuntu实例设置。 这个实例上有一个节点的Web服务器。 当我尝试打我的网站时,我的浏览器出现错误。 错误是:
Connect: Connection refused
我已经确认我可以ping机器。 但是,当我在浏览器中inputhttp://[ipAddress]或http://[ipAddress]:8080时,出现上述错误。 当我启动节点的Web服务器时,它说:
Server listening on 8080
我使用以下命令实现端口转发:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
我相信我使用以下命令适当地打开防火墙:
iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
我卡住了。 我不知道为什么我会收到拒绝的连接。 我会真诚地感谢任何人可以提供的帮助或见解。 此时,我不确定这个消息是来自Ubuntu还是来自Node服务器。 除此之外,我不熟悉如何跟踪这个问题。
感谢您的帮助。 它对我意义重大。
您的服务器很可能不在[ipAddress]:8080上侦听[ipAddress]:8080很可能只在localhost:8080上侦听。 你可以使用netstat来检查你将需要configuration你的服务器来监听所有/适当的IP地址。 无疑如何做到这一点将在文档中。
你想填写serverAddress ,使其在正确的networking接口上侦听:
http.createServer(function (req, rsp) () { ... }).listen(serverPort, serverAddress);
还请确保Amazon EC2在pipe理控制台中有一个安全组连接到您的计算机实例,以允许在该端口上访问。 (这些安全组允许您configurationEC2防火墙。)
我与我的ExpressJS应用程序有完全相同的问题,这不是你的重新路由。 我砍了iptables和netstat很长一段时间,直到我意识到我有我的HOSTvariables在我的server.js文件设置为localhost 。 这是我的非工作代码:
app.listen(PORT, 'localhost', function(err) { if (err) return console.log(err); console.log("Listening at http://localhost:%s", PORT); });
只需添加一个主机variables
var HOST = 'actual_server_goes_here...';
然后这样做:
app.listen(PORT, HOST, function(err) { if (err) return console.log(err); console.log("Listening at http://%s:%s", HOST, PORT); });
希望这可以帮助 :)
您需要使用您的私有IP才能收听。 实例的私有IP地址(如果实例有多个networking接口,则会列出多个IP地址)。 它在每个实例的EC2pipe理控制台中显示