Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   некорректная работа nodejs (https://javascript.ru/forum/node-js-io-js/69224-nekorrektnaya-rabota-nodejs.html)

raft 07.06.2017 13:07

некорректная работа nodejs
 
Всем привет!

Изучаю совсем недавно nodejs, на локальном сервере все проходит нормально. Решил перенести на VPS (ОС - Debian 7). Использовал команды:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

все стало успешно, но теперь другая проблема - на сервере также есть несколько других сайтов на WordPress, в итоге - если к любому сайту добавить порт :3000 (тот, который слушает сервер на nodejs), то все они загружают одну и ту же страницу.

Почему так происходит?

raft 07.06.2017 14:22

вернее почему - понятно. так как все доменные имена на одном ip, то все эти обращения это по сути http://xxx.xxx.xxx.xxx:3000

вопрос - как сделать так, чтобы открывался только определенный домен с данным портом, остальные - попытка соединения не удалась?

destus 07.06.2017 15:50

raft,
Есть такое понятие -- виртуальный хост https://github.com/expressjs/vhost

Вот только запускать все сайты из под одного node.js процесса не есть хорошо.

raft 07.06.2017 17:45

destus,
имеется ввиду, что если один из сайтов завалит процесс, то и все остальные перестанут работать? или есть еще какие-то недостатки?

если будет, например, 5 сайтов на nodejs, то и в памяти будут висеть 5 процессов и память тоже будут кушать за пятерых? где-то видел, что один процесс ноды - это порядка 80Мб, то 12 сайтов - это 1ГБ оперативной памяти?

по поводу виртуального хоста - насколько я понял необходимо использовать или проксирующий nginx или модули самого nodejs, например, vhost. Какой вариант наиболее предпочтителен?

destus 07.06.2017 19:02

raft,
Цитата:

имеется ввиду, что если один из сайтов завалит процесс, то и все остальные перестанут работать? или есть еще какие-то недостатки?
Именно. Все сайты работают в одном event loop. А это значит, что тормоза на одном из них (утечки памяти и т.д.), будут сказываться и на других сайтах. Нет возможности перезапустить какой-то конкретный сайт, придется перезапускать сразу все и заново их стартовать. Ну и в логах будет каша.

Цитата:

по поводу виртуального хоста - насколько я понял необходимо использовать или проксирующий nginx или модули самого nodejs, например, vhost. Какой вариант наиболее предпочтителен?
В реальном node.js приложении, перед нодой стоит nginx, который раздает статику. Для динамического контента, nginx проксирует запросы на бэкенд.


Часовой пояс GMT +3, время: 08:57.