Javascript 如何在浏览器中而不是本地主机上访问remote node.js应用程序
我正在尝试设置一个简单的“Hello world”node.js应用程序 我创建了以下index.js文件:Javascript 如何在浏览器中而不是本地主机上访问remote node.js应用程序,javascript,node.js,apache,server,vps,Javascript,Node.js,Apache,Server,Vps,我正在尝试设置一个简单的“Hello world”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(){
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");
});
var-app=require(“express”)();
var http=require(“http”).Server(app);
应用程序获取(“/”,函数(请求,恢复){
res.send(“Hello worlddddd”);
});
http.listen(8080,函数(){
log(“监听*:8080”);
});
当我打开本地控制台并执行node index.js
时,我会收到消息“listening on*:8080”,这与预期一致。我将我的浏览器指向localhost:8080,然后我看到HTML页面按需要显示“Hello worlddd”
现在,我正试图在我的虚拟专用服务器上做同样的事情,这样我就可以从不同的计算机上访问相同的应用程序,但我得到的只是连接超时。我遵循了以下步骤:
- 在我的VPS上安装node.js
- 通过
npm安装--save安装expressexpress@4.10.2
- 将我的index.js文件上载到IP为192.123.123.12的服务器上的
文件夹(例如,这不是我的真实IP)var/www/html
- 通过PuTTY访问服务器,然后运行
,在那里我得到了node index.js
,因此我知道node.js正在工作“监听*:8080”
- 现在我将浏览器指向
大约20秒后,我收到浏览器错误:“连接超时”http://192.123.123.12:8080
- 我尝试改为监听端口:80,但我得到的错误是这个端口已经在使用中
有人知道我做错了什么吗?我用错端口了吗?我是否指向了错误的URL?我需要修改我的服务器首选项吗?(在CentOS上运行Apache)。我只找到了几十个教程,教你如何在本地计算机上运行node.js应用程序(将浏览器指向localhost:8080),但我需要它在我的远程服务器上运行,以便多台计算机可以访问同一个应用程序。问题是,除非你明确允许,否则当前的过滤器(iptables)会阻止流量
您只需打开入站端口TCP 8080,就可以访问node.js服务器了 您需要找到在VPS上运行node.js服务器应用程序的特定文档,以及如何配置传入端口以及是否支持长时间运行的服务器(如NodeJ)。这不是一般的说明,但可能涉及您自己的托管服务的特定配置。哦,谢谢!那么,它不应该直接开箱即用吗?也许我的主机提供商的客户服务中心可以提供帮助。可能只是一些(默认)过滤,阻止连接到预定义端口以外的其他端口。或者,如果您与其他主机共享IP,则可能会更加复杂。请检查筛选器(如果是基于Linux的服务器,则可能是iptables)。如果你有任何类型的控制面板,它可能在那里的某个地方是可配置的。@jcaron哦,天哪,我找到了!非常感谢!iptables无疑让我走上了正确的方向,因为它是ApacheCentos服务器。我最后使用了以下命令:
sudoiptables-I INPUT 1-I+-ptcp-dport8080-jaccept
。使用通配符+
是否会使我容易受到任何安全问题的攻击?尽管阅读了Ubuntu Iptables Howto页面,但我仍然不完全理解该接口参数的作用。对于任何想尝试了解这是否是问题的人,只需尝试在该端口上远程登录服务器,例如,telnet myserver.com 8080
。如果您收到一条消息,表明您已连接,则端口已打开。