Хостинг node.js для определенного домена только на VPS

У меня есть VPS, на котором я разместил несколько сайтов. Все основано на стеке LAMP, так что в этом не было ничего страшного. Они предоставляют WHM/cpanel для управления разными сайтами. Я решил попробовать node.js, купил для него отдельный домен, и мне нужна подсказка, как указать этот домен на приложение node.js.

Итак, вот вопросы:

1) Как лучше всего разместить приложение node.js в определенном домене, не мешая другим сайтам? Как я буду настраивать домен? Да, я бы хотел использовать http-порт по умолчанию (80) для node.

2) Поскольку Apache уже прослушивает порт 80, стоит ли использовать Apache mod_proxy для этой цели? Я имею в виду, если я хочу использовать веб-сокет, будет ли apache по-прежнему использовать отдельные потоки для поддержания соединения с узлом?

PS. Я уже видел этот вопрос, но ответы не кажется убедительным.


Редактировать:

Я забыл упомянуть, что у меня есть неиспользуемый выделенный IP-адрес для этого VPS, который я могу использовать для node.js.


person Mehdi    schedule 03.10.2011    source источник
comment
Настоятельно рекомендуется получить для этого отдельный VPS. Использование прокси-модулей будет ограничивать возможности и производительность.   -  person Fosco    schedule 03.10.2011
comment
Вы можете довольно быстро начать работу с приложением узла на Heroku и указать свой домен на экземпляр приложения Heroku, и вам не придется возиться с прокси-серверами Apache. devcenter.heroku.com/articles/node-js   -  person mhoofman    schedule 04.10.2011


Ответы (3)


Выполните следующие действия

  1. Перейдите в «WHM >> Конфигурация службы >> Конфигурация Apache >> Редактор зарезервированных IP-адресов», а затем «Зарезервировано» IP-адрес, который вы хотите использовать для node.js. Это освободит IP от apache.

  2. Создайте новую запись DNS с записью A, например - example.com A YOUR_IP_ADDRESS

  3. Скажите серверу node.js прослушивать ваш IP, используя server.listen(80, "YOUR_IP_ADDRESS");

person Rifat    schedule 03.10.2011
comment
Может ли параметр host метода listen() быть доменом, например. server.listen(80, "example.com")? - person snapfractalpop; 20.09.2012
comment
Спасибо, бро!! спас мою задницу .. вопрос!! Как это работает... как я могу прослушивать порт 80 с помощью apache и nodejs??? - person Ray Garner; 29.04.2013
comment
@RayGarner, нет. На шаге 1 вы освобождаете IP-адрес от Apache. Apache и NodeJS не могут работать на одном и том же порту. Этот пример был приведен для VPS с несколькими IP-адресами. Изначально они зарезервированы apache, даже если вы их не используете. Таким образом, вы можете освободить IP-адрес для использования с NodeJS. - person Rifat; 30.04.2013
comment
Да, я вижу, но разве у VPS нет только одного порта 80. Вот чего я не понимаю... почему это можно сделать на vps с несколькими ips, но не на моей машине дома. Разве коробка/виртуальная коробка не имеет только один порт 80. Даже если он выпущен из apache, этот порт не должен по-прежнему использоваться apache, обслуживающим другие ips. Я программист, а не системный администратор, поэтому просто любопытно. Также этот метод работал как шарм, просто было любопытно, почему это возможно. Спасибо за ответ, спас мой день. - person Ray Garner; 30.04.2013
comment
@RayGarner, не волнуйтесь, я тоже программист :) И вы можете использовать один и тот же порт несколько раз, используя разные IP-адреса. Попробуйте на своей локальной машине :) - person Rifat; 30.04.2013
comment
@Rifat Спасибо, меня только что отвели в школу;) Итак, теперь я знаю, что порты относятся к IP-адресу, а НЕ к машине. По какой-то причине у меня в голове возник образ машины, которой назначено столько портов. Но порты назначаются по IP на физическом устройстве. Не к самому устройству. Ясно как божий день. Спасибо. - person Ray Garner; 01.05.2013

Если Apache уже прослушивает порт 80, то единственное, что вы можете сделать, это проксировать ваш экземпляр узла. И да, apache создаст новый поток для каждого соединения.

person swatkins    schedule 03.10.2011

Как уже упоминалось, здесь не так уж много можно сделать. Apache в настоящее время управляет вашим сервером, а node.js не понравится ездить на дробовике.

Я бы рекомендовал проверить такие вещи, как nodester, no.de, heroku и и так далее.

person Chance    schedule 03.10.2011
comment
Я отредактировал вопрос. Не избавит ли наличие отдельного IP от использования прокси? - person Mehdi; 04.10.2011
comment
Вы можете заставить apache прослушивать один IP-адрес, а node.js — другой IP-адрес, и они не будут мешать друг другу. - person Eliasdx; 04.10.2011