Указывать домен для моего удаленного приложения Node JS? - PullRequest
11 голосов
/ 09 июня 2011

Я пытаюсь понять, как именно развернуть Node JS на моем сервере Ubuntu 10.04 LTS. Я прочитал много разных блогов и статей, которые объясняют несколько разных способов. Большинство из них кажутся устаревшими или, кажется, не работают.

Кажется, самое простое решение - использовать что-то вроде Forever? ... или Upstart с Monit или Supervisor. Это правильно?

Одна вещь, которую я до сих пор не понимаю - без использования чего-то вроде Ngnix, как бы я на самом деле заставил мое доменное имя (например, example.com) фактически указывать на мое приложение Node JS, и на нем запущен порт?

Большое спасибо за любые рекомендации. Я не эксперт в этом, поэтому, пожалуйста, извините за недостаток знаний здесь. (Я стараюсь изо всех сил! :) 1007 *

ОБНОВЛЕНИЕ: причина, по которой я спрашиваю это на моем сервере, у меня запущен Ngnix для моих статических / Django проектов. Я хочу использовать тот же сервер для некоторых примеров приложений Node JS, с которыми я возиться. Я перешел по ссылке о vhosts и Connect with Node JS, и это хорошо, но я все еще не понимаю, как заставить один из моих доменов фактически указывать на это приложение Node на моем сервере?

1 Ответ

16 голосов
/ 09 июня 2011

Вам необходимо отделить понятие доменного имени от фактического сервера.Доменное имя указывает на сервер.Когда браузер (или другой клиент) запрашивает 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");

Это запускает сервер, прослушивающий порт 1337. Любые запросы, направленные на example.com:1337, будут отвечать на это приложение Node.JS с помощью «Hello World».".

tl; dr: Ваше доменное имя уже указывает на ваш сервер.Вы можете получить доступ к своему приложению по адресу example.com:1337, где 1337 - ваш порт.

...