2016-03-30 1 views
0

私たちはapache 2.2.22とtomcat-7の間で逆プロキシを試みています。私のhttpd.confファイル内のentiresは以下の通りです:すべてのリクエストが最初の(デフォルト)仮想ホストに送信されています

NameVirtualHost *:80 
<VirtualHost *:80> 
DocumentRoot /apps/httpd-2.2.22/docroot/app1/ 
ServerName app1.mycompany.com 
ErrorLog logs/app1.mycompany.com.error_log 
CustomLog logs/app1.mycompany.com.access_log common 
...... 
......... 
</VirtualHost *.80> 

<VirtualHost *:80> 
DocumentRoot /apps/httpd-2.2.22/docroot/app2/ 
ServerName app2.mycompany.com 
ErrorLog logs/app2.mycompany.com.error_log 
CustomLog logs/app2.mycompany.com.access_log common 
.... 
...... 
</VirtualHost *.80> 

としては、まだ今のためのHTTPリクエストをチェックしたい、SSL証明書を取得するために待っています。私はすべての機能をチェックするためにブラウザにIPを与えています。

両方のアプリケーションのブラウザからの要求が、最初の仮想ホストに上陸しています。私はAPP1仮想ホストのエントリを削除した場合

http://1.2.3.4/app1 (Gives me the correct site) 

http://1.2.3.4/app2 (Gives me wrong, as docroot it reads is of 1st host) 

は、http://1.2.3.4/app2が正常に動作します。

すでに古いサーバーで同じ設定が実行されているため、URLにhttp://app1.mycompany.com/app1(IPの代わりにサーバー名を指定)を指定していません。このサーバーをセットアップして正常に動作させると、交換する必要があります。

  1. 古いサーバーのIPをブラウザに渡すと、アプリケーションが正常に動作します。なぜこのサーバーで失敗したのですか?私はこれのためにいくつかの追加のセットアップが必要ですか?

  2. ServerNameのマッピング方法は?

は機械 言う APP1APP2がでているのTomcatサーバ上で実行されていることを言及するのを忘れた場合、およびApache Webサーバは、マシン Bです。私はこれのためにいくつかの設定を行う必要がありますか?既にtomcatサーバーの詳細はworker.propertiesにあります。

答えて

1

名前ベースの仮想ホストを使用している場合、セクション内のServerNameは、この仮想ホストと一致するように要求のHost:ヘッダーに表示する必要のあるホスト名を指定します。

出典:https://httpd.apache.org/docs/2.4/mod/core.html#servername

ブラウザで入力したドメイン名は「ホスト」という名前のHTTPリクエストヘッダとしてサーバーに送信されます。サーバーは、ServerNameの値と「Host」HTTPリクエストヘッダーにある値を照合することによって、各要求に使用する正しい仮想ホスト構成を選択します。それが使用される一致

一致するサーバー名またはにServerAliasが最も具体的な一致するIPアドレスとポートの組み合わせを含む仮想ホストのセットに見つからない場合、次に最初にリストされた仮想ホスト

出典:https://httpd.apache.org/docs/2.4/vhosts/name-based.html

現在、サーバーがコンテンツを提供するように基づき、代わりにドメイン「app2.mycompany.com」の、ホストヘッダにIP「1.2.3.4」を受信して​​います最初の仮想ホストの構成。

ソリューション: ホストがのみローカルマシン上のファイル変更することで、新しいサーバーをテストします。今すぐあなたのローカルマシン上のブラウザでhttp://app2.mycompany.comを入力し、「app2.mycompany.com」のためのDNS解決があなたの新しいサーバーのIPを返します

1.2.3.4 app1.mycompany.com 
1.2.3.4 app2.mycompany.com 

:hostsファイルに次の行を追加します。したがって、ローカルマシン上ののみ、新しいサーバーからコンテンツが取得されます。それ以外の世界では、コンテンツは引き続き古いサーバーから取得されます。 hostsファイルは、Linuxでは/ etc/hosts、WindowsではC:\ Windows \ System32 \ drivers \ etc \ hostsのパスにあります。

+0

それを行いました。それでも同じエラー。 dan app2.mycompany.comとして掘る**ステータスとしてNXDOMAIN **を取得しました。 nslookup app2.mycompany.comは同じ: - **サーバはapp2.mycompany.com:NXDOMAINを見つけることができません。/etc/hostsファイルには、127.0.0.1,1.2.3.4、および8.8.8.8のエントリもあります。開発者であれば、他に何が欠けているのかは分かりません。 – pranav

+0

app1とapp2はマシンAにあるTomcatサーバー上で実行されており、Apache WebサーバーはマシンBに入っていることを忘れてしまいました。いくつかのLinuxシステムファイルでこれを設定する必要がありますか? tomcatサーバーのエントリは、すでにworker.propertiesファイルにあります。 – pranav

+0

もう1つのアップデートで、私のシステムから** ping http://app2.mycompany.com**にアクセスできますが、ブラウザからのアクセスでもエラーは400になります。 – pranav

関連する問題