将node.js app指向我的ip地址并在本地运行

时间:2016-07-17 19:21:01

标签: node.js web-hosting vps

所以我对这个话题有两个问题。我已经购买了一台带有digitalocean.com的VPS来托管我的node.js应用程序,他们给了我一个示例hello world app来启动。

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
var html = "hello world";
res.end(html);
}).listen(8080, 'localhost');
console.log('Server running at http://localhost:8080/');

所以这段代码在本地工作,当我在VPS上托管时,我替换了#localhost'使用我的VPS的IP地址,当我转到http://IP_Address_of_VPS:8080

时可以在网上找到它

我的第一个问题:我如何在网上直播主持但是指向我的IP地址?当我更换' localhost'使用我的IP地址,当我转到http://my_IP_Address:8080

时,它不起作用

我的第二个问题: 我在node.js教程之后创建了一个测试应用程序,这里是代码

var PORT = process.env.PORT || 8080;
var express = require('express');
var app = express();
var http = require('http').Server(app);

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

http.listen(PORT, function(){
console.log('listening on port *:'+PORT);
});

public是具有简单html页面的文件夹。当我在http://localhost:8080

本地运行时,此应用有效

有人可以解释当我没有指定' localhost'在http.listen()函数中?另外,如果流程与第一个应用程序有任何不同,我如何指向第二个应用程序从我的IP地址运行?

1 个答案:

答案 0 :(得分:0)

第一个问题

我希望我理解你的问题,这是尝试回答:)

取决于你对'我的IP地址'的意思。如果是您的公共IP地址,则可能必须设置端口转发。大多数路由器默认拒绝来自外部网络(连接到您自己的公共IP地址时正在执行的操作)到内部网络的流量。

如果您的意思是私人IP地址(本地网络本地),您需要使用公共IP地址并设置端口前端。

当您将端口转发设置到本地计算机时,您可能还希望将私有IP地址设置为静态。

但是,我不建议将家用计算机用作生产服务器。您需要解决许多问题,例如使您的网络安全并且停机时间短。

第二个问题

如果没有主机名传递给http.listen,服务器将接受所有地址的连接。 See documentation for more information

这样可行,因为当您在函数调用中省略参数时,它们将默认为undefined。例如,http.listen(8080)可能显示为http.listen(8080, undefined, undefined, undefined)。在函数体内部,这些通常会被一些默认值替换。

将您的应用提供给世界其他地方的过程应该没有任何不同。