Как разместить приложения с 3 узлами с 3 разными доменами на одном VPS?

Я застрял, пытаясь настроить несколько приложений Node в разных доменах на одном дроплете Digital Ocean. Я следил за Размещение нескольких приложений Node.js на одном VPS с помощью nginx, навсегда и crontab.

У меня все домены указаны правильно и А записи установлены.

Кажется, я не могу заставить приложения работать (навсегда) на каком-либо другом порту, кроме Express 3000 по умолчанию.

Я изменил настройки Nginx, как он просил:

Я раскомментировал server_names_hash_bucket_size 64; (как говорится)

Я создал файлы /etc/nginx/conf.d/example.com.conf для приложений (это разные домены. Я поставил 1 на порт 3000, а другой на 4000).

пример:

server {
listen 80;

server_name your-domain.com;

location / {
    proxy_pass http://localhost:{YOUR_PORT};
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

}

Я не понимаю разницы между тем, когда Nginx запускает приложение, и когда навсегда? Где в игру вступает «npm start»? Сколько потенциальных серверов работает одновременно?

Кажется, я не могу запустить более 1 приложения одновременно. Я могу понять, как правильно назначить папку приложения Node порту и навсегда сохранить ее.


person Kyle Pennell    schedule 07.05.2014    source источник
comment
Я некоторое время бился головой об стену и изменил proxy_pass http://localhost:{PORT} на http://127.0.0.1:{PORT}, и это сработало. Не уверен, почему nginx не читал локальный хост, но да... на случай, если кто-то еще столкнется с чем-то подобным.   -  person Richard    schedule 17.12.2015


Ответы (2)


Посмотрите, что вам нужно сделать: допустим, у вас есть 3 экземпляра узла, работающих на 3000,5000,7000. Теперь вам нужно указать 3 поддомена на один и тот же IP-адрес. Допустим, у вас есть домен example.com, тогда ex1, ex2, ex3 эти три будут указывать на один и тот же IP-адрес. Теперь создайте 3 отдельных файла в /etc/nginx/sites-enabled/, скажем, ex1.example.com, ex2.example.com, ex3.example.com, теперь настройте серверные блоки в этих файлах, чтобы они указывали на соответствующее приложение узла, и перезапустите нгинкс. Теперь у вас есть три приложения узла на одном сервере с тремя разными ссылками доступа.

person Advay Umare    schedule 16.03.2017

Например, я упоминал выше в DigitalOcean Nginx не запускает приложение. Это веб-сервер, и в данном случае он действует как прокси. Приложения запускаются на нестандартном порту, а Nginx затем ретранслирует на порт 80 на правильных доменах.

Выбор порта для запуска зависит от самого приложения. Это приложения, которые вы написали, или просто то, что вы установили? Обычно вы можете установить порт как переменную среды. Итак, вы бы начали свое приложение с чего-то вроде:

PORT=4000 forever start --sourceDir /path/to/your/node/app main.js

Это предполагает, что приложение делает что-то вроде ниже. Это из шаблона, созданного с помощью экспресс-генератора, поэтому он довольно универсальный:

#!/usr/bin/env node
var debug = require('debug')('my-application');
var app = require('../app');

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});

По умолчанию используется порт 3000, если не установлена ​​переменная среды.

person andrewsomething    schedule 07.05.2014
comment
Спасибо, Эндрю. Это проясняет некоторые вещи. Позвольте мне повозиться с этим еще немного и посмотреть, смогу ли я понять это. - person Kyle Pennell; 08.05.2014