web-dev-qa-db-ja.com

2つのマシン上の1つのIPアドレス、2つのWebサイト-詳細が必要

この質問はすでに別のユーザーによって投稿されていますが、詳細な回答はありませんでした。元の質問へのリンクは次のとおりです- One IP address、Two Websites、on Two Machines

Apache2がインストールされ、静的IPアドレスを持つ2台のマシンがあります。

サーバー1

example.com
static ip = 192.168.0.6
Apache2 running on ports 80 and 443 fine
ufw and router firewall are open on ports 80 and 443 as well

サーバー2

domain name = myhost01.example.com 
static ip = 192.168.0.7
Apache2 running on 8080(HTTP) and 8443(HTTPS) 
ufw and router firewall are open on ports 8080 and 8443

{http)www.example.comまたは(https)www.example.comにアクセスすると、サーバー1のWebコンテンツが正しく受信されます

Myhost01.example.com:8080またはmyhost01.example.com:8443にアクセスすると、サーバー2のWebコンテンツを正しく受信します

ユーザーがhttp:// myhost01 .example.com /にアクセスすると、http:// myhost01のコンテンツを受信するように、プロキシサーバー2をリバースします。 example.com:8080/、基本的にポート番号を隠します。現在、myhost01(dot)example(dot)comにアクセスしようとすると、「接続できません/ Webページが見つかりません」というエラーが表示されます

Example.comの仮想ホストファイルでは、次を使用しました。

ProxyRequests Off

ProxyPass / http://myhost01. example.com:8080/
ProxyPassReverse / http://myhost01 .example.com:8080/

Apache2でproxyとproxy_httpモジュールの両方が有効になっています

これを機能させる方法についてのアイデアはありますか?

PS -3つ以上のURLを投稿するのに十分な評価ポイントがないため、URLにスペースが追加されました。

**UPDATE-以下の注を参照

Server1-example.com-VHOST FILE

<VirtualHost *:80>

    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /myweb/cmweb/Apache/http

#ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://myhost01.example.com:8080/
ProxyPassReverse / http://myhost01.example.com:8080/

        <Directory />
                Options Indexes FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /myweb/cmweb/Apache/http/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all

        </Directory>

        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
        LogLevel warn

</VirtualHost>

Myhost01(dot)example(dot)comを無効に置き換える192.168.0.7でプロキシを試行しました

Server2-myhost01(dot)example(dot)com VHOST File

 <VirtualHost *:8080>

    ServerAdmin [email protected]
    ServerName myhost01.example.com
    ServerAlias myhost01 myhost01.example.com

    DocumentRoot /mwdhost/cmweb/Apache/http

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /mwdhost/cmweb/Apache/http/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined
    LogLevel warn

</VirtualHost>

ドメイン登録者のレコードにmyhost01が追加されました。NSLOOKUPを実行し、myhost01.example.comの正しい外部IPアドレスを取得できます。

以下はserver1のApache Error.logです-私の問題の手がかりになるかもしれません???

Sun Feb 02 18:24:52 2014] [error] (111)Connection refused: proxy: HTTP: attempt to connect to 54.43.138.12:8080 (myhost01.example.com) failed
[Sun Feb 02 18:24:52 2014] [error] ap_proxy_connect_backend disabling worker for (myhost01.example.com)
[Sun Feb 02 18:24:53 2014] [error] proxy: HTTP: disabled connection for (myhost01.example.com) 
[Mon Feb 03 07:33:54 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
3
Cmweb

提案:

server1(example.com)がmyhost01.example.com?の正しいDNSレコードを検索して取得できることを確認しました

サーバーには、それぞれパブリックIPと内部IPがありますか?または、1つのIPを持っているというリンクされた質問のようなものですか?

1つのIPを持ち、NATとポート転送を上記のポートで実行する安価なルーターの匂いがしますか?

  • 安価なルーターでは、外部アドレスを使用してnatとポートフォワーディングを組み合わせて他の内部マシンに到達するのに問題があることがよくあります。ゲートウェイ/ NATルーターと考えられるすべての内部負荷を送信することは悪い習慣であるため、一部はこれを意図的に失敗させます。

両方のDNSレコード(myhost1.example.comおよびexample.com)が同じパブリックIPを指している?

  • はい、それは意図的で正しいことですが、どうなりますか?

    • Apacheインスタンスがプロキシ接続を行う場所を検索する場合、myhost01.example.comの外部IPに、接続に失敗する可能性のあるルーターを指していることが通知されます。想定してみましょう。

1つの可能性のあるエラーが見つかりました、それをどのように回避しますか?

  • DNSからの外部IPは、ローカルネットワークを経由するローカルIPをserver1が見つけるのに役立たないため、それを行う方法が必要ですが、幸運なことにローマには多くの方法が存在します。

    • 1つの方法は、ProxyPassでserver2のローカルIPを使用することです。
    • 別の方法は、単にDNSの回答をオーバーライドすることです。これは、プロキシとして機能するserver1で実行できます。ファイル/etc/hostsを編集します。 hostsファイルについてはこちらをご覧ください。 に関する詳細情報
    • 3番目の方法は、ローカルサーバー用に追加のDNSレコードを作成することです。例:という名前のエントリ。 192.168.0.7を指すlocal2.example.com。

注:疑問に思うなら、もっと多くのパブリックIPを持ち、小さなサブネット上でそれらを実行することは完全に可能です。これは相互接続としても機能します。そうすることはあまりお勧めできません。

免責事項

完全な構成、Apacheのログとエラーが回答から欠落しているため、この回答は経験に基づいた推測に基づいています。気軽に改善してください。

0

あなたのアプローチはやり過ぎのようです。

最新のすべてのWebサーバーでは、複数のWebサイトを単一のIPアドレスとポートにバインドできます。これは、それぞれのサイトのホストヘッダー名を構成することによって行われます。

さらに、SNIを使用して、複数のSSLサイトが同じIPアドレスとポート(443など)を指すようにすることができます。古いブラウザはSNIをサポートしていませんが、それはあなたにとって心配ではないかもしれません。

サイトの1つをポート8080にフックしてからプロキシを接続するのは、ポート8080を何らかの方法でクライアントに公開する必要がある場合を除き、長い道のりです。

私は忙しいので、どうしても必要な場合を除き、Apacheの構成に多くの時間を費やしません。それ以外の場合は、Virtualmin( http://www.webmin.com/virtualmin.html )を使用し、そのような構成のダーティな作業の85%を処理します。

0
Xavier J