Как Meteor может обрабатывать несколько виртуальных хостов?

Как Meteor может обрабатывать несколько виртуальных хостов?

www.Some-Client-Domain.com --> www.Our-CName-URL.com --> приложение Meteor.

Нам нужно, чтобы приложение Meteor обслуживало тот же сайт/приложение, но с данными, относящимися к исходному запрошенному URL-адресу (Some-Client-Domain.com).

В нашем текущем прототипе у нас есть NGINX перед Rails, и есть несколько разных способов сделать это, включая подключение NGINX к БД для определений МНОГИХ виртуальных хостов. Это прекрасно работает, потому что, если новый клиент зарегистрируется, мы можем обновить БД, и тогда NGINX сразу узнает об этом виртуальном хосте без какой-либо дополнительной настройки NGINX.

Как это будет реализовано в Метеоре?

Спасибо!


person Eric    schedule 09.12.2012    source источник
comment
сделать stackoverflow.com/questions/14285668/ и serverfault.com/questions/290952/ помогают?   -  person Luke Stanley    schedule 14.04.2013
comment
Люк. Не уверен. В итоге я остановился на SilkJS.net, так как он гораздо лучше подходит для моего приложения с точки зрения чистой скорости и количества возможных подключений. ЛЮБЛЮ это до сих пор. Невероятная поддержка тоже. Сказав это, сайт сейчас не в сети. РЖУ НЕ МОГУ.   -  person Eric    schedule 14.04.2013


Ответы (1)


Что ж, если вы просто игнорируете SSL на данный момент (или хотите разобраться с SSL позже), приведенное ниже руководство должно сработать:

Основная идея

.. заключается в создании нескольких экземпляров одного и того же приложения с разными базами данных (в обычном случае mongo) в зависимости от базового URL-адреса.

Мы собираемся использовать следующие настройки для виртуальных хостов:

  • Site #1 : www.example1.com
    • Meteor port: 3000
    • Конечная точка/URL-адрес MongoDB: mongodb://localhost:27017/example1
  • Site #2 : www.example2.com
    • Meteor port: 3001
    • Конечная точка/URL-адрес MongoDB: mongodb://localhost:27017/example2

Подготовка экземпляров meteor

  1. Установите foreman через rubygems:

  2. Создайте файл foreman Procfile в каталоге проекта метеора. Используя приведенные выше данные (не включайте маркеры: D):

    • web1: ROOT_URL=http://www.example1.com/ PORT=3000 MONGO_URL=mongodb://localhost:27017/example1 meteor
    • web2: ROOT_URL=http://www.example.com/ PORT=3001 MONGO_URL=mongodb://localhost:27017/example2 meteor
  3. -ИЛИ- если вы используете версию meteor bundle:

    • web1: ROOT_URL=http://www.example1.com/ PORT=3000 MONGO_URL=mongodb://localhost:27017/example1 node bundle/main.js
    • web2: ROOT_URL=http://www.example2.com/ PORT=3001 MONGO_URL=mongodb://localhost:27017/example2 node bundle/main.js
  4. Затем вы можете запустить foreman start непосредственно в том же каталоге (добавьте & в конце, чтобы отправить в фоновый режим). или вы можете установить его как сценарий службы / выскочки через foreman export (это может отличаться для других дистрибутивов Linux, пожалуйста, обратитесь к документации Foreman: http://ddollar.github.io/foreman/‎):

    • sudo foreman export --app meteors --user <meteor files owner> upstart /etc/init

Подготовка nginx

С этого момента конфигурация для nginx должна быть довольно простой:

server {
  listen 80;

  server_name www.example1.com example1.com; 

  location / {
    proxy_pass        http://localhost:3000;
    proxy_set_header  X-Real-IP  $remote_addr;
  }
}


server {
  listen 80;

  server_name www.example2.com example2.com; 

  location / {
    proxy_pass        http://localhost:3001;
    proxy_set_header  X-Real-IP  $remote_addr;
  }
}

Дайте мне знать, если это сработает для вас, хотя вы упомянули, что вместо этого уже использовали SilkJS, я просто оставлю это здесь для всех, кто заинтересован в решении.

person Seth Malaki    schedule 16.05.2013
comment
Эй, небольшое замечание, прокси nginx для example2.com должен быть 3001 - person Phung D. An; 21.11.2017