Я использую сервер 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.