将 node.js 应用指向我的 IP 地址并在本地指向 运行
pointing node.js app to my ip address and running locally
关于这个话题我有两个问题。我购买了 VPS 和 digitalocean.com 来托管我的 node.js 应用程序,他们给了我一个示例 hello world 应用程序作为启动。
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 地址?当我用我的 IP 地址替换 'localhost' 时,当我转到 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
本地时,这个应用程序可以工作
有人可以解释当我没有在 http.listen() 函数中指定 'localhost' 时,第二个应用程序 运行 是如何在本地运行的吗?另外,如果过程与第一个有任何不同,我如何将第二个应用程序从我的 IP 地址指向 运行?
第一个问题
我希望我理解你的问题,这里是一个答案的尝试:)
有点取决于你用 'my ip address' 表达的意思。如果它是您的 public ip 地址,您可能需要设置端口转发。默认情况下,大多数路由器将拒绝从外部网络(连接到您自己的 public ip 地址时正在执行的操作)到内部网络的流量。
如果您指的是私有 IP 地址(本地网络的本地地址),则需要使用 public IP 地址并设置端口转发。
当您设置到本地计算机的端口转发时,您可能还希望将您的私有 IP 地址设为静态。
但是,我不建议将您的家用计算机用作生产服务器。您将需要解决很多问题,例如确保网络安全和减少停机时间。
第二个问题
当没有主机名传递给 http.listen
时,服务器将接受所有地址上的连接。 See documentation for more information.
这行得通,因为当您在函数调用中省略参数时,它们将默认为 undefined
。例如,http.listen(8080)
可能显示为 http.listen(8080, undefined, undefined, undefined)
。在函数体内,这些通常会被一些默认值替换。
将您的应用程序提供给世界其他地方的过程应该没有任何不同。
关于这个话题我有两个问题。我购买了 VPS 和 digitalocean.com 来托管我的 node.js 应用程序,他们给了我一个示例 hello world 应用程序作为启动。
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 地址?当我用我的 IP 地址替换 'localhost' 时,当我转到 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
本地时,这个应用程序可以工作有人可以解释当我没有在 http.listen() 函数中指定 'localhost' 时,第二个应用程序 运行 是如何在本地运行的吗?另外,如果过程与第一个有任何不同,我如何将第二个应用程序从我的 IP 地址指向 运行?
第一个问题
我希望我理解你的问题,这里是一个答案的尝试:)
有点取决于你用 'my ip address' 表达的意思。如果它是您的 public ip 地址,您可能需要设置端口转发。默认情况下,大多数路由器将拒绝从外部网络(连接到您自己的 public ip 地址时正在执行的操作)到内部网络的流量。
如果您指的是私有 IP 地址(本地网络的本地地址),则需要使用 public IP 地址并设置端口转发。
当您设置到本地计算机的端口转发时,您可能还希望将您的私有 IP 地址设为静态。
但是,我不建议将您的家用计算机用作生产服务器。您将需要解决很多问题,例如确保网络安全和减少停机时间。
第二个问题
当没有主机名传递给 http.listen
时,服务器将接受所有地址上的连接。 See documentation for more information.
这行得通,因为当您在函数调用中省略参数时,它们将默认为 undefined
。例如,http.listen(8080)
可能显示为 http.listen(8080, undefined, undefined, undefined)
。在函数体内,这些通常会被一些默认值替换。
将您的应用程序提供给世界其他地方的过程应该没有任何不同。