web-dev-qa-db-ja.com

メインドメインでMeteorを、サブドメインでApacheを個別に提供

UbuntuサーバーでMeteorサーバーを実行しています。しかし、Apacheに同じサーバー上のサブドメインを提供させようとすると問題が発生します。

main.domain.com-> Meteor

sub.domain.com-> Apache

Meteorはポート80で実行されています。以前にMeteorをポート3000で実行し、Nginxでリバースプロキシで提供しようとしましたが、Meteorの動作が悪くなり(tcp/websocketsの問題)、夜と夜が多すぎて持続できませんでした。自分のために。

そこで、Meteorをメインサーバーにするようにセットアップを元に戻し(アプリは正常に動作します)、サブドメインにサービスを提供するApacheをインストールします。問題は、Meteorサーバーをオーバーランしているように見えるため、ポート80でもApacheを提供できないことです。

経験から、私はMeteorのリバースプロキシを避けようとしていますが、サーバーの「すべてのポート80」を圧倒することなく、Apacheをサブドメイン専用にするのに十分な知識がありません。

この種の設定で両方のサービスを相互に動作させるにはどうすればよいですか?


更新:

EasyEchoの提案に従って、2つの異なるIPアドレスを使用することにしました。

私はRackspaceで「次世代」クラウドサーバーを使用しています(最新のgrub2/updatedカーネルで最新のUbuntu12.04LTSを実行しています。

Rackspaceは、クラウドサーバーでの追加のIPを許可していません( source ).。

OpenStackを搭載した次世代のクラウドサーバープラットフォームは、追加のIPアドレスをまだサポートしていません。

...ただし、サーバーの作成時に1つのIPv4と1つのIPv6を取得します。では、IPv6の時流に乗ってみませんか?言うのは簡単です。

これが私の「新しい問題」です。サブドメインをIPv6アドレス(DNSのAAAA)にマッピングし、IPv6アドレスをリッスンするようにApacheを構成した後、次の動作が発生します。

サーバーのリモートデスクトップから(freeNXを使用)、Firefoxで

  • http:// [my:ip:v6:address]-> Apache(WIN)
  • http:// sub.domain.com-> Apache(WIN)
  • http:// my.ip.v4.address-> Meteor(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-> Meteor(WIN)
  • http:// main.domain.com-> Meteor(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>

/ etc/Apache2/sites-enabled/default

<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>

これを「アドバタイズ」として機能するように修正できますか?

1
kinologik

うーん、これを行うために複数のIPアドレスは必要ありません。

NginXやHAProxyなどの軽量なもので0.0.0.0:80をリッスンし(スケーリングは問題になりません)、トラフィックを下の関連レイヤーにリバースプロキシし、別のポートで実行します(0.0ではなくlocalhostでリッスンします)。 0.0)。

そのため、Apache.your_domain.comのリクエストが届き、HAProxyは内部でトラフィックを別のポートで実行されているApacheにルーティングします。

meteor.your_domain.comのリクエストが届き、HAProxyは内部でトラフィックをNode.jsにルーティングします...

1
chriswessels

可能であれば、マシンに複数のIPを割り当て、Meteorを一方のIPで80にバインドし、Apacheをもう一方のポート80にバインドするように設定します。 Apache Documentation および Meteor Demo を参照してください。これは、探しているものをカバーしているようです。


更新:

さて、それはたくさんの新しい情報です...

IPv4を使用しているため、ワークステーションからIPv6 ip/Hostに接続できない可能性があります。

1
EasyEcho