将域指向我的远程Node JS应用程序?

lit*_*m84 12 deployment node.js ubuntu-10.04

我正在尝试弄清楚如何在我的Ubuntu 10.04 LTS服务器上部署Node JS.我读过许多不同的博客和文章,解释了多种不同的方式.大多数似乎过时了,或者看起来并没有真正起作用.

似乎最简单的解决方案是使用像Forever这样的东西?......或Monit或Monit或Supervisor.那是对的吗?

我仍然不明白的一件事是没有使用像Ngnix这样的东西,我怎么能真正得到我的域名(例如example.com)来实际指向我的Node JS应用程序并且它正在运行端口?

非常感谢任何指导.我不是这方面的专家,所以请原谅我在这里缺乏知识.(我正在努力!:)

更新:我问这个的原因是在我的服务器上我有Ngnix运行我的静态/ Django项目.我想要使​​用相同的服务器来处理我正在搞乱的一些示例Node JS应用程序.我已经关注了关于vhosts和Connect with Node JS的链接,这很好用,但我仍然不明白如何让我的某个域实际指向我服务器上的Node应用程序?

Cas*_*Chu 17

您需要将域名的概念与实际服务器分开.域名指向服务器.当浏览器(或其他客户端)请求example.com时,DNS会查找关联的IP地址并将浏览器定向到该IP地址的服务器.

然后,浏览器通过查看URL来选择通过哪个端口发送请求.例如,对example.com:345的请求将选择端口345.如果未指定,默认情况下,在使用HTTP时,它使用端口80.

因此,浏览器通过端口80发送了请求.现在,在您的服务器上,有一个程序正在侦听该端口.对你来说,它会nginx.Nginx读取请求("哦,你正在寻找index.html")并传回你请求的内容.

在您的场景中,Node.JS取代了Nginx.要使Node.JS响应,它还需要侦听端口并进行适当的响应.这就是你的代码进来的地方:

require('http').createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
Run Code Online (Sandbox Code Playgroud)

这将启动一个服务器,侦听端口1337.任何指向example.com:1337的请求都将由具有"Hello World"的Node.JS应用程序响应.

tl; dr:您的域名已指向您的服务器.您可以访问example.com:1337访问您的应用程序,其中1337是您的端口.