Apache プロキシのブラウザ URL が間違っています

Apache プロキシのブラウザ URL が間違っています

私は次のものおよび mod_proxy を使用して、Tomcat 上にVirtualHostある Java Web サービスに 'api' サブドメインのすべてのリクエストをプロキシしています。webapps/webservice

<VirtualHost *:80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /webservice http://localhost:8080
    ProxPassReverse / http://localhost:8080
</VirtualHost>

問題は、「api.mydomain.com」と入力すると、「api.mydomain.com/webservice」にリダイレクトされ、「webservicewebservice」が利用できないために 404 エラーが発生することです。

何をすればいいのか誰か知っていますか?

解決: 以前にもこの解決策を試したことはありましたが、Stony の言う通りでした。私の場合の問題は、何も変更していなくても、動作させるために Tomcat を再起動する必要があったことです。Apache を複数回再起動しましたが、何も変わりませんでした。

答え1

あなたの問題を正しく理解しているか分かりませんが、webserviceURL に を含めたくない場合は、プロキシ パスを に設定してください/

<VirtualHost *::80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://localhost:8080/webservice/
    ProxPassReverse / http://localhost:8080/webservice/
</VirtualHost>

それとも、そのドメインで Web サービスを実行したいですか? リダイレクトは不要ですか?

答え2

いくつかのテストと多くのエラーを経て、最終的に次の解決策にたどり着きました。

私はApache仮想ホストを次のように設定しました:

<VirtualHost *:80>
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny, allow
        Allow from all
    </Proxy>                                                                        
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    ServerName api.mydomain.com
</VirtualHost>

api.mydomain.com今では、特定のディレクトリを指定せずに、ポート 8080 上の Tomcat へのすべてのリクエストをプロキシするだけです。

次にこれを追加しました/etc/tomcat7/server.xml:

<Host name="api.mydomain.com" appBase="webapps">
    <Context path="" docBase="webservice" />
</Host>

私の Apache 仮想ホストで有効になっているため、ProxyPreserveHostTomcat は元のリクエストのホスト名を取得し、配信するコンテンツを自分で決定できます。

コンテンツはappBase="webapps"、別の場所にあっても、ルート ディレクトリから配信されるようです。

関連情報