【问题标题】:Node JS not listening to port 1337 on serverNode JS 没有监听服务器上的 1337 端口
【发布时间】:2015-09-18 02:05:54
【问题描述】:

我正在尝试在由 Google 托管的特定灯服务器上打开一个端口,并且我通过 ssh 与该服务器连接。

我已经按照this 链接配置了 nvm 和最新的 Node JS(v0.12.5)。安装后,我在“server.js”文件中使用了这个演示代码,并使用命令“node server.js”,看起来Node JS正在运行,在服务器控制台上显示“Server ready”消息。现在的问题是,当我使用“netstat -n”检查开放端口时,我没有看到任何开放的 1337 端口,它应该是。我也尝试使用“serverIPaddress:1337”通过浏览器进行连接,但我收到“正在连接...”消息,然后什么也没有发生。

知道我在哪里搞砸了吗? 我也对放入 server.js 文件的服务器 IP 地址(localhost:127.0.0.1)或(globalIPaddress)感到困惑。

P.S:请在下面找到 server.js 文件脚本。

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

【问题讨论】:

  • 你必须在远程机器上向世界开放1337端口

标签: javascript node.js http server nvm


【解决方案1】:

尝试删除“127.0.0.1”或将其更改为0.0.0.0 - 以侦听所有接口。 有关详细信息,请参阅文档 https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback

使用当前设置,服务器仅接受来自本地主机的连接。 此外,您需要调整防火墙以打开远程服务器上的 1337 端口

【讨论】:

    【解决方案2】:

    你有两个问题:

    1) "127,0,0,1" 表示"localhost" - 如果您希望远程客户端连接,则不合适。

    2) 端口 1337 可能(也可能不会)通过防火墙打开。好像不是。

    建议更改:

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

    这是假设您的远程服务器没有其他网络服务器已经绑定到端口 80。如果您修改后的程序因“端口正在使用”错误而死机,请尝试使用端口 8080。或端口 8888。

    【讨论】:

    • 端口 80 需要 root 权限。
    • @Pranav Nemade - 就像我说的:1) 只用端口号调用“listen()”。不要指定 127,0,0,1,不要指定 anything,除非你想监听一个特定的 IP 地址。 2)尝试80端口。先试试。端口“80”很可能在防火墙上打开,并且大多数远程客户端(尤其是那些使用 Wifi 的,如酒店和机场)应该能够连接。我希望这会有所帮助 - 祝你好运!
    【解决方案3】:

    只需输入端口号进行侦听,而不是同时使用端口号和 IP 地址

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

    如果您想使用 ip 地址,则只能从本地使用 url 127.0.0.1:1337 访问服务器,您将无法使用 localhost:1337 访问它

    【讨论】:

      【解决方案4】:

      是的,我已经尝试过多次发送到服务器,但有时它不起作用 - 如果您使用:

      "lsof -P -iTCP | grep LISTEN"
      

      你可以在-bash中查看进程。

      然后确定有多少端口在工作。您可以使用以下命令终止进程:

      "kill -9 process_id".

      正在使用的端口”表示该端口正在被其他应用程序使用或正在其上运行的程序。

      例如:

      iTunes 有时不允许您在同一个端口发送。

      这样比较好退出应用并稍后再发送。

      【讨论】:

        猜你喜欢
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        • 2018-06-15
        • 2016-01-07
        • 1970-01-01
        • 2014-03-23
        • 1970-01-01
        • 2012-08-11
        相关资源
        最近更新 更多