如何将node.js服务器指向域名?(我也使用socket.io)

如何将node.js服务器指向域名?(我也使用socket.io),node.js,deployment,dns,server,Node.js,Deployment,Dns,Server,这是我的服务器代码: var static = require('node-static'); var http = require('http'); var file = new(static.Server)(); var app = http.createServer(function (req, res) { file.serve(req, res); }).listen(2013); 然后我得到了更多与socket.io有关的代码。 我还刚刚在gandi.net注册了一个域名 所以

这是我的服务器代码:

var static = require('node-static');
var http = require('http');
var file = new(static.Server)();
var app = http.createServer(function (req, res) {
  file.serve(req, res);
}).listen(2013);
然后我得到了更多与socket.io有关的代码。 我还刚刚在gandi.net注册了一个域名

所以,gandi.net给了我一个输入DNS的选项。 如何准确地从我的计算机中找到要输入的正确DNS

我通常在windows控制台上运行node server.js。然后,在浏览器的地址栏中,我只需执行localhost:2013或从wifi网络上的另一台设备访问它,然后在控制台中键入ipconfig来查找ipv4地址。然后我在另一个设备中输入该地址,后面是:2013作为端口

那么,我怎样才能用自己的域名运行这个服务器呢


我知道我将得到一个真正的永久服务器,但现在我只想知道如何从我的计算机上运行它

它应该在端口80上侦听


域名提供商的dns设置应该指向您的传出ip地址。在对同样的事情思考了几个星期之后,我想我已经得到了答案。看看这对你是否有帮助

简短的回答是我的答案。如果您不在Windows上,也可以再次检查或


长答案

仅为更广泛的读者总结一下这个问题:您已经了解了如何在计算机上运行node.js。您正在使用命令行启动计算机上的节点服务器,方法是键入“node server.js”(如果“server.js”是您命名的包含服务器代码的文件)。您可能在服务器文件中选择了一个端口号(如3000或9000),这样您就可以通过键入localhost:3000或localhost:9000通过浏览器访问您的工作。或者,您也可以让您的nodejs应用程序使用某种socket.io连接,以便您在服务器文件中创建文件室,并且每次通过浏览器打开localhost:3000或localhost:9000(或您正在使用的任何端口)时,它都会创建一个新用户,并将其添加到文件室中。一切都很好! 现在,你要做的是让网络,而不仅仅是你的电脑,都可以访问。因为如果使用不同计算机的人在浏览器中键入“localhost:3000”(或任何端口),他们将看到有关其本地计算机的信息,而不是您在计算机上构建的、您可以通过同一URL访问的精彩内容。因此,您希望将您的作品放到网上,可以通过CoolNodeJSTUFF.com这样的域名访问。但是您想知道如何使计算机上的server.js代码指向域名。在server.js代码中写出域名的URL似乎没有帮助

以下是我遇到的情况:您需要的是一个在线运行的服务器(而不是在您的计算机中)。这类似于你为你的域名购买主机,不同的是,当你申请简单的主机时,你没有太多的权限访问服务器的功能。您需要寻找的是一个专用服务器,这样您就可以在该服务器上手动安装一些东西(比如nodejs等),就像您通过命令行在计算机上安装nodejs时所做的那样。然后,您将在专用服务器上上载所有文件,并在服务器上安装所需的内容(nodejs等)。nodejs应用程序始终指向其运行的机器上IP地址的“本地主机”。当你有一台专用服务器时,它会附带一个IP地址。这就是上传的文件指向的地方,也就是说,如果您正确安装了所有内容,并且正确启动了服务器,那么如果您在URL字段中输入专用服务器的IP地址(后跟冒号和代码中指定的端口),您应该能够通过浏览器访问nodejs应用程序。 但是你希望人们通过一个有意义的url而不是一堆数字来访问你的节点应用程序,你希望应用程序指向一个人们更容易记住的域名。为此,您只需更改域名信息(前提是您拥有一个域名),以符合您购买专用服务器的客户的要求

好吧,但你到底是怎么做到的

是我从中获得解决方案的视频。这很好地解释了我刚才所说的一切。如果您按照以下说明操作,您应该能够在不到一小时内使您的节点应用程序联机。它主要是为windows用户设计的,因此使用了一些在linux上可能不太好的软件(putty、winscp等) 但这些其他视频更适合Mac用户(顺便说一句,putty的Linux替代方案是flightplan,因此如果这些视频无法帮助Linux用户,只需在谷歌上快速搜索“deploy nodejs flightplan”之类的词即可)

  • ,
轶事我的应用程序无法运行,直到我改变了在server.js文件中传递端口号的方式,以匹配视频中的示例。 我想我是说

var app = express();
var server = app.listen("3000");
在我把它改成之后,它开始工作了

var app = express();
var server = app.listen(process.env.PORT || 3000);
此外,如果您使用的是socket.io连接,则可能必须从客户端启动连接。执行
var socket=io.connect()就足够了!您不需要传递'localhost:3000'内容,因为默认情况下它将遵循localhost路径

那里!你应该准备好了!我很抱歉,如果这是一个有点长和罗嗦。。。我只是希望在我努力寻找答案的时候,有人能以类似的方式为我解决这个问题


无论如何,我希望这对某人有用

编辑主机文件或查看DDN。显然,在NAT或防火墙之后,公共互联网仍然无法访问您的站点,但如果您只是想测试一下,以上内容就足够了。当我使用我的ip时,gandi只会说“错误输入了无效地址”。好吧,迈出一步