【问题标题】:nodejs wont allow non local connectionsnodejs 不允许非本地连接
【发布时间】:2015-05-07 01:21:10
【问题描述】:

-如果我用 django 之类的其他东西在同一个端口上提供同一个应用程序,它就可以工作

-如果我从服务器本身卷曲(就好像它是在本地主机上提供的一样),我可以卷曲并从节点应用程序获得响应。

-app.js 就是这样:

var express = require('express');
var app = express();


app.use(express.static(__dirname + '/public'));
app.listen(8080);

-运行快递

-我想从任何连接到互联网的机器上看到它,而不仅仅是从服务器上

【问题讨论】:

  • 您是否知道这台计算机上的端口 8080 是否真的可以从 Internet 访问?如果是这样,您使用的是原始 IP 地址还是 DNS 名称?这台计算机的网络位置类型是什么?家用路由器后面的家用电脑?数据中心的共享主机?专用主机?
  • 是的,我也尝试了其他端口,但正如我所说,我在 8080 上运行了一个 django 服务器并且它工作正常。
  • 您在 8080 上的 Express 服务器和您在 8080 上的 DJango 服务器之间必须有一些其他的区别,而不是您声称的。一个端口就是一个端口。如果您的 express 服务器实际上在端口 8080 上运行,并且您声称可以访问端口 8080,那么 express 服务器也可以工作。
  • 是的,我意识到问题实际上出在客户端。服务器很好。正如预期的那样,该端口是一个端口,我的两台服务器都没有问题。不过谢谢

标签: django node.js express server connect


【解决方案1】:

app.listen(8080) 替换为app.listen(8080, '0.0.0.0')

【讨论】:

    【解决方案2】:

    我希望你没想到默认情况下 localhost 是互联网可见的 :)

    最简单的方法是将您的应用部署到可用的平台服务之一。 Heroku 是提供免费计划的 node.js 的不错选择。

    另一方面,如果您只是想测试一下,ngrok 是一个方便的工具,它可以通过生成的 URL(如 http://{hash}.ngrok)使您的 localhost:port 对 Internet 可见。 com.

    【讨论】:

    • app.listen(8080);使它不是本地主机,这是肯定的。相信我,这是公开的。其次,我真的宁愿将节点单独部署在我的服务器上,很抱歉不可能。
    猜你喜欢
    • 2017-07-05
    • 2019-11-03
    • 2019-01-03
    • 2018-04-01
    • 1970-01-01
    • 2018-04-19
    • 2017-02-28
    • 1970-01-01
    相关资源
    最近更新 更多