Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在浏览器中而不是本地主机上访问remote node.js应用程序_Javascript_Node.js_Apache_Server_Vps - Fatal编程技术网

Javascript 如何在浏览器中而不是本地主机上访问remote node.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(){

我正在尝试设置一个简单的“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(){
    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的服务器上的
    var/www/html
    文件夹(例如,这不是我的真实IP)
  • 通过PuTTY访问服务器,然后运行
    node index.js
    ,在那里我得到了
    “监听*:8080”
    ,因此我知道node.js正在工作
  • 现在我将浏览器指向
    http://192.123.123.12:8080
    大约20秒后,我收到浏览器错误:“连接超时”
  • 我尝试改为监听端口: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
。如果您收到一条消息,表明您已连接,则端口已打开。