【问题标题】:node - what's wrong with my app?节点 - 我的应用程序有什么问题?
【发布时间】:2013-05-27 04:37:04
【问题描述】:

我在端口 80 上运行了 httpd,我正在尝试将节点应用程序绑定到端口 8080。

这里是:

var server = require('http').createServer(function(req, res){

    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
});
server.listen(8080);

显然已经通过 ssh 命令行运行它

node myApp.js

但每当我在浏览器中输入“http://my-domain:8080/”时,它就会挂起,什么也没给我。..

我尝试了一系列不同的端口并在主机名 0.0.0.0 上进行侦听,结果都相同。

按照 cmets 的建议运行 netstat,结果是:

tcp        0      0 0.0.0.0:8080               0.0.0.0:*                   LISTEN      3894/node           

我在 nan 非托管 VPS 上使用 centOS!

编辑:看起来这是一个防火墙问题,有人能指出我正确的方向,如何为 CentOS VPS 配置防火墙吗?

【问题讨论】:

  • 你能把netstat -ptan | grep 8080的输出贴出来吗?
  • 已相应地编辑了问题:)
  • 对我来说,它在端口 22222 上运行,而不是在 8080 上运行。是什么让你 grep 获取 22222?
  • 哦,那是从尝试在 22222 上运行它时得到的,我在 8080、32、8001 和许多其他服务器上尝试过,结果都一样。
  • 运行服务器的机器和你的桌面一样吗?如果是这样http://localhost:8080 应该可以工作。如果不是,客户端和服务端是什么关系?

标签: linux node.js


【解决方案1】:

可能是您的防火墙设置。在服务器的 shell 提示符下,尝试使用curl 连接。

curl -v http://localhost:8080/

如果您可以通过localhost 访问它,但不能通过浏览器访问,那么您很可能遇到了防火墙问题。

如果您可以通过localhost 访问服务器,那么接下来要做的就是通过 IP 地址从外部测试服务器。如果您可以通过 IP 地址访问它,那么您有 DNS 问题。如果您无法从外部通过 IP 地址访问它,那么您有防火墙问题。

防火墙问题是特定于平台的。我们需要了解平台才能为您指明正确的方向。

【讨论】:

  • 我可以通过 curl 和 localhost 连接!!你知道我该如何解决这个防火墙问题吗?非常感谢你!
  • 我可以通过 IP 地址访问 httpd 服务器,但不能通过节点一:即 http://*my-server-ip*/ 将我带到 php 应用程序,但 http://*my -server-ip*:8080/ 没有。我发现这意味着我遇到了防火墙问题;我在非托管 VPS 上使用 CentOS
【解决方案2】:

试着写:

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

.listen(8080); 在同一行。

或者从服务器使用localhost:8080/ 运行它,他可能会从外部阻止

【讨论】:

    猜你喜欢
    • 2013-09-12
    • 2013-01-04
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多