Назад | Перейти на главную страницу

Независимое обслуживание Meteor в основном домене и Apache в субдомене

Я использую сервер Meteor на своем сервере Ubuntu. Но проблемы возникают, когда я пытаюсь настроить Apache, обслуживающий поддомен на том же сервере.

main.domain.com -> Метеор

sub.domain.com -> Apache

Meteor работает на порту 80. Ранее я пытался запустить Meteor на порту 3000 и обслуживать его через обратный прокси-сервер с Nginx, но Meteor начал вести себя плохо (проблемы с tcp / websockets), и я провел слишком много вечеров и ночей, чтобы сохранять ради.

Поэтому я вернул свою настройку, чтобы Meteor был основным сервером (приложение работает нормально), а затем установил Apache для обслуживания моего поддомена. Проблема в том, что у меня не может быть Apache, обслуживающего порт 80, так как он, кажется, переполняет мой сервер Meteor.

Исходя из опыта, я стараюсь держаться подальше от обратного проксирования Meteor, но я недостаточно осведомлен, чтобы заставить Apache посвятить себя моему поддомену и не перегружать "все, порт 80" на моем сервере.

Как я могу заставить обе службы взаимодействовать друг с другом при такой настройке?


Обновить:

Следуя предложению EasyEcho, я перешел к использованию двух разных IP-адресов.

Да будет известно, я использую облачный сервер «следующего поколения» в Rackspace (работающий под управлением последней версии Ubuntu 12.04 LTS с последним grub2 / обновленным ядром.

Rackspace не допускает дополнительных IP-адресов на своих облачных серверах (источник) ...

Платформа облачных серверов следующего поколения на базе OpenStack еще не поддерживает дополнительные IP-адреса.

... но вы получаете 1 IPv4 и 1 IPv6 при создании сервера. Так почему бы не присоединиться к IPv6? Легче сказать, чем сделать.

Итак, вот моя «новая проблема»: после сопоставления моего поддомена с IPv6-адресом (AAAA в DNS) и настройки Apache для прослушивания IPv6-адреса я получаю следующее поведение:

С моего удаленного рабочего стола сервера (с использованием freeNX) в Firefox

С моей рабочей станции (Win7 x64), также в Firefox

Вот моя конфигурация Apache:

/etc/apache2/ports.conf

NameVirtualHost [my:ip:v6:address]:80
Listen [my:ip:v6:address]:80

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

/ и т.д. / apache2 / сайты-включены / по умолчанию

<VirtualHost [my:ip:v6:address]:80>
    ServerAdmin webmaster@localhost

    ServerName sub.domain.com

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Можно ли исправить это, чтобы оно работало как "рекламируемое"?

Хм, для этого не нужно несколько IP-адресов.

Слушайте 0.0.0.0:80 с помощью чего-то легкого, например NginX или HAProxy (масштабирование не будет проблемой), а затем обратным прокси-трафиком на соответствующий уровень ниже, работая на отдельных портах (прослушивание на localhost, а не на 0.0. 0,0).

Итак, запрос приходит на apache.your_domain.com, а HAProxy внутренне направляет трафик через Apache, работающий на другом порту.

Запрос приходит для meteor.your_domain.com, а HAProxy внутренне направляет трафик через Node.js ...

Если возможно, назначьте машине несколько IP-адресов и настройте Meteor на привязку к 80 на одном из IP-адресов, а Apache на привязку к порту 80 на другом. Видеть Документация Apache и Демо-версия Meteor который, кажется, охватывает то, что вы ищете.


Обновить:

Что ж, это много новой информации ...

Скорее всего, вы не можете подключиться к IPv6 ip / host с вашей рабочей станции, потому что вы используете IPv4.