2016-02-25 110 views
0

我试图设置一个简单的“Hello world”node.js应用程序。如何在浏览器中访问远程node.js应用程序,而不是在本地主机

我创建了以下index.js文件:

var app = require("express")(); 
var http = require("http").Server(app); 

app.get("/", function(req, res){ 
    res.send("<h1>Hello worlddddd</h1>"); 
}); 

http.listen(8080, function(){ 
    console.log("listening on *:8080"); 
}); 

当我打开本地控制台,并执行node index.js,我得到的消息“监听*:8080”,符合市场预期。我将浏览器指向localhost:8080,并根据需要看到HTML页面显示“Hello worlddd”。

现在,我试图做同样的我的虚拟专用服务器上,这样我就可以从不同的计算机访问相同的应用程序,但我得到的是连接超时。我已经按照下列步骤操作:

  • 通过npm install --save [email protected]
  • 我的VPS安装的node.js
  • 安装快递上传我的index.js文件到我的IP 192.123.123.12服务器上的文件夹var/www/html(一例如,这不是我的真实IP)。
  • 访问PuTTY通过服务器,并运行node index.js,在那里我得到"listening on *:8080",所以我知道Node.js的工作。
  • 现在我将浏览器指向http://192.123.123.12:8080,经过大约20秒后,我收到浏览器错误消息:“连接超时”。
  • 我试着听端口:80代替,但我得到这个端口已被使用的错误。

有谁知道我做错了吗?我使用错误的端口?我是否指向错误的网址?我需要修改我的服务器首选项吗? (在CentOS上运行Apache)。我只找到了几十个教程,教你如何在本地计算机上运行node.js应用程序(将浏览器指向localhost:8080),但我需要它运行在远程服务器上,以便多台计算机可以访问应用程序。

+0

你需要找到特定的文档以您的VPS运行的node.js服务器应用程序以及如何配置输入端口,以及是否长时间运行的服务器(如的NodeJS)的支持。这不是通用说明,但可能涉及您自己的托管服务的特定配置。 – jfriend00

+0

哦,谢谢!那么预计不会直接开箱即用?也许我的托管服务提供商的客户服务中心可以帮忙。 – Marquizzo

+0

可能只是一些(默认)过滤正在阻止连接到其他预定义端口的端口。或者,如果您与其他主机共享IP,则可能会更复杂一些。 – jcaron

回答

2

问题是您的当前过滤器(iptables)会阻止流量,除非您明确允许它。

你只需要打开TCP端口8080入站,你应该能够到达你的node.js服务器!

+1

,并且对于任何试图查看这是否是问题的人,只需尝试telnet到该端口上的服务器,例如, 'telnet myserver.com 8080'。如果您收到一条说明您已连接的消息,则该端口已打开。 –

相关问题