1

仮想ホストをサポートするようにApacheサーバーを構成しようとしています。これらのホストは、ポート80で行われたリクエストをJboss ASでホストされている別のアプリケーションにリダイレクトします。たとえば、構成は次のようになります。

<VirtualHost *:80>
ServerName www.testdomain.com
ProxyPass / http://localhost:8080/contextPath
ProxyPassReverse / http://localhost:8080/contextPath
ProxyPreserveHost On 
ProxyPassReverseCookiePath / / 

</VirtualHost>

ただし、問題は、 http://www.testdomain.comにアクセスしようとすると、URL が効果的に localhost:8080 にリダイレクトされることですが、コンテキスト パスが重複しています。IE: http://www.testdomain.com/contextPath/contextPath

なぜこれが起こっているのかについてのアイデア。どうもありがとう。

4

2 に答える 2

2

私は同じ問題を抱えていましたが、これは URL にスラッシュを追加することで解決されました。

ProxyPass / http://localhost:8080/contextPath/
ProxyPassReverse / http://localhost:8080/contextPath/

それは私のためにそれを解決しました!

単一の仮想ホスト ファイルの完全な例。ドメインとサブドメインごとに1つずつ、いくつかあります。

ProxyRequests Off
ProxyPreserveHost On
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName        enter.name.here
        ProxyPass         / http://127.0.0.1:8080/<contextPath>/
        ProxyPassReverse  / http://127.0.0.1:8080/<contextPath>/
        ErrorLog /var/log/apache2/somelog.log
        CustomLog /var/log/apache2/somecustom.log common
</VirtualHost>
于 2012-06-06T17:21:56.310 に答える
1

本当に何かをプロキシしようとしている場合を除き、「ProxyPass」および「ProxyPassReverse」エントリを削除する必要があります。jboss AS が別のサーバー上にある場合は、プロキシ エントリを保持する必要がありますが、コンテンツが 1 台のマシン上にあり、複数のマシン上にない場合、プロキシ エントリを保持することが難しくなっているように思えます。

1 つのサーバーで 2 つの異なるドメインのルートとして異なるベース フォルダーを使用する場合は、DocumentRoot パラメーターを指定して 2 つのドメインを構成する必要があります。

たとえば、1 台のコンピューターで google.com と yahoo.com をホストしたい場合、virtualhost エントリには次のものが含まれます。

<VirtualHost *:80>
ServerName www.google.com
DocumentRoot /var/www/Google
</VirtualHost>
<VirtualHost *:80>
ServerName www.yahoo.com
DocumentRoot /var/www/Yahoo
</VirtualHost>

次に、各サーバーのルート ディレクトリは、それぞれ google フォルダーと yahoo フォルダーになります。

完全に異なるマシンをプロキシしようとしている場合は、次のように動作するはずです。

<VirtualHost *:80>
ServerName www.google.com
ProxyPass / www.google.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.yahoo.com
ProxyPass / www.yahoo.com
</VirtualHost>

あなたのエントリは特にあまり意味がありません。私はそれが次のようになるべきだと思います:

<VirtualHost *:80>
ServerName www.testdomain.com
ProxyPass /contextPath http://localhost:8080
ProxyPassReverse /contextPath http://localhost:8080
</VirtualHost>
于 2011-07-26T23:21:12.763 に答える