web-dev-qa-db-ja.com

単一のファイアウォールの背後にある複数のWebサーバー

単一のファイアウォール(SVN、Exchangeなど)の背後に複数のWebサーバーがあります。さまざまなサーバーすべてにリモートでアクセスできるようにしたいのですが、それらはすべて同じポート(標準HTTPS)を使用しているため、これは可能ですか?

それぞれが異なるポートでリッスンするように設定すると、異なるサブドメインを使用して各サーバーにアクセスできるようにすることができます(したがって、svn.domain.comはsvn、mail.domainをポイントします。 comはサーバーの交換を指します)?クライアントが要求したサブドメインに応じて異なる方法でポートを転送するようにルーターを設定する方法はありますか?

人々は通常どのようにこの問題に対処しますか?

8
William

個人的には、1つのIPアドレスの背後にある複数のサーバーにサービスを提供する場合、Apacheでリバースプロキシを使用するのが好きです。これについては数年前に記事を書きました。

複数のWebサーバーが必要になる場合がありますが、1つのパブリックIPアドレスしか与えられていません。遭遇する問題は、複数のドメインに同じIPアドレスを解決させたいが、別のサーバーをポイントさせたいということです。これはApacheで非常に実行可能です。プライベートクラウド内のゲートウェイサーバーを192.168.1.2のアドレスで構成しました。ローカルアドレスを持つWebサーバーがいくつかあります。たとえば、192.168.1.10および192.168.1.11。

ゲートウェイサーバーにApacheとmod_proxyファイルをインストールします。これが完了すると、仮想ホストをセットアップしてドメインを転送できるようになります。

<VirtualHost *:80>
   DocumentRoot /var/www/example.org
    ServerName *.example.org
    ProxyRequests Off
    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>
    ProxyPreserveHost on
    ProxyPass / http://192.168.1.10/
    ProxyPassReverse / http://192.168.1.10
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot /var/www/example.com
    ServerName *.example.com
    ProxyRequests Off
    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>
    ProxyPreserveHost on
    ProxyPass / http://192.168.1.11/
    ProxyPassReverse / http://192.168.1.11/
</VirtualHost>

Apacheを再起動し、192.168.1.2ローカルアドレスへの着信接続を受け入れるようにルーターを構成します。 DocumentRootを同じ場所(/ var/wwwなど)にポイントすることもできますが、通常、SSLを強制できる各サイトの.htaccessファイルがあります(特定のドメイン名で80から443にリダイレクトします)。

このルートのいいところは、同じIPアドレスで複数のHTTPSサーバーを提供できることです。唯一の問題は、Internet ExplorerがVirtualHostポート443または名前付きホストを認識せず、証明書エラーが発生することです。ただし、Safari、Firefox、およびChromeはすべて、プロキシされているドメインの個々の証明書をすべて認識します。

10
kobaltz

または、PageKiteを使用することもできます:)

以下のプロジェクトページを参照してください。
https://pagekite.net/wiki/OpenSource/

2
Liliputech

これは、内部および外部DNSにサブドメインを設定することで実現できます。ここに良い 記事 実行しているDNSに基づいて追加する必要があるものを説明します。エントリを外部DNSに追加すると、反映に時間がかかることに注意してください。

1
Keltari

コバルツはおそらく最良の解決策です。

ただし、デフォルト以外のポートを使用する場合は、いずれかのアプリのポート転送を設定できます(実際には、そのNAT送信元/宛先ポートを変更します))。それらのうち、httpsの通常のポート443および8443のような他のポートとして表されます。その他のサーバーを参照するには、https://youipaddress:8443(または、セットアップがある場合はDNSエントリ)を入力する必要があります。別のポート番号を使用してもかまいませんが、機能が制限されている場合はかなり一般的なソリューションです。

特定の構成は、NAT(ファイアウォールまたはルーター))を実行するEdgeデバイスによって大きく異なりますが、通常は次のように変換します。

内部IP->外部IP(外部インターフェースのIPの可能性があります)標準ポート(443)->選択されたポート(例えば8443)

これはポート転送に関する良い記事です。

1
Mike M

ここ は、プロキシサーバーをセットアップするためのMicrosoftのドキュメントです。

0
BobW