Обслуживание Meteor на основном домене и Apache на поддомене независимо
Я использую сервер Meteor на своем сервере Ubuntu. Но проблемы возникают, когда я пытаюсь, чтобы Apache обслуживал поддомен на том же сервере.
main.domain.com -> Метеор
sub.domain.com -> Apache
Метеор работает на порте 80. Ранее я пытался запустить Метеор на порту 3000 и использовать обратный прокси-сервер с Nginx, но Метеор начал плохо себя вести (проблемы с tcp/websockets), и я провел слишком много вечеров и ночей, чтобы настаивать на своем. ради.
Поэтому я изменил настройки, чтобы Meteor был основным сервером (приложение работает нормально), а затем установил Apache, чтобы обслуживать мой поддомен. Проблема в том, что я не могу заставить Apache обслуживать порт 80, так как он, кажется, перегружает мой сервер Meteor.
Исходя из своего опыта, я стараюсь держаться подальше от обратного прокси-сервера Meteor, но я недостаточно осведомлен, чтобы заставить Apache посвятить себя моему поддомену и не перегружать "все порт 80" на моем сервере.
Как сделать так, чтобы обе службы вели себя друг с другом в такой конфигурации?
Обновить:
Следуя предложению EasyEcho, я перешел к использованию 2 разных IP-адресов.
Пусть это будет известно, я использую облачный сервер "Next Generation" в Rackspace (на котором установлена последняя версия Ubuntu 12.04 LTS с последним grub2/ обновленным ядром).
Rackspace не позволяет использовать дополнительные IP-адреса на своих облачных серверах ( источник)...
Платформа облачных серверов следующего поколения на базе OpenStack пока не поддерживает дополнительные IP-адреса.
... но вы получаете 1 IPv4 и 1 IPv6 при создании сервера. Так почему бы не запрыгнуть в подножку IPv6? Проще сказать, чем сделать.
Итак, вот моя "новая проблема": после сопоставления моего субдомена с адресом IPv6 (AAAA в DNS) и настройки Apache для прослушивания адреса IPv6, я получаю следующее поведение:
С моего удаленного рабочего стола сервера (с помощью freeNX), в Firefox
- http: // [my: ip: v6: address] -> Apache (WIN)
- http: // sub.domain.com -> Apache (WIN)
- http: // my.ip.v4.address -> Метеор (WIN)
- http: // main.domain.com -> Apache (FAIL)
С моей рабочей станции (Win7 x64), также в Firefox
- http: // [my: ip: v6: address] -> Время ожидания истекло (FAIL)
- http: // sub.domain.com -> сервер не найден (FAIL)
- http: // my.ip.v4.address -> Метеор (WIN)
- http: // main.domain.com -> Метеор (WIN)
Вот моя конфигурация 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>
Можно ли это исправить, чтобы работать как "рекламируемый"?
2 ответа
Хм, вам не нужно несколько 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 на одном из ips и Apache для привязки к порту 80 на другом. Смотрите Apache Documentation и Meteor Demo, который, кажется, охватывает то, что вы ищете.
Обновить:
Ну, это много новой информации...
Вероятно, вы не можете подключиться к IPv6 ip/host с вашей рабочей станции, потому что вы находитесь на IPv4.