0

mod_proxy_ajp を使用して構成された apache と tomcat を持つアプリケーションがあります。以下のように httpd.conf で構成しました。

# This is to redirect any request which is coming with hostname to   Login.jsp
RewriteRule ^/$ /jsp/Login.jsp [R]

#include httpd-proxy.conf
<IfModule mod_proxy_ajp.c>
 Include conf/extra/httpd-proxy.conf
</IfModule>

httpd-proxy.conf には、次のプロキシ構成があります。

<Proxy *>
  AddDefaultCharset Off
  Order deny,allow
  Allow from all
</Proxy>
ProxyPass /jsp/ ajp://localhost:8009/jsp/
ProxyPassReverse /jsp/ ajp://localhost:8009/jsp/

Tomcat の server.xml ファイルで、AJP コネクタを次のように構成しました。

 <Connector port="8009" protocol="org.apache.coyote.ajp.AjpProtocol" redirectPort="8443" address="localhost" 
        enableLookups="true" maxThreads="500" connectionTimeout="120000" URIEncoding="UTF-8" />

ホスト名とIPアドレスでマシンにアクセスすると、リクエストは正常に機能し、Login.jspが表示されます。ただし、以下のように元のサーバー名へのエイリアスを使用して、サーバーとクライアント (ブラウザーが実行されている場所) の両方のホスト ファイルにエントリを追加すると、機能しません。

    some_ip_address original_host_name  alias1 #This is alias

http://alias1としてリクエストを行うと、リクエストは Login.jsp にリダイレクトされますが、ページが表示されません。ブラウザでは、URL がhttp://alias1/jsp/Login.jspとして表示されますが、ページが表示されません。apache ajp ログでは、応答コードが 200 であることを確認できます。正確にどこに問題があるのか​​ わかりません。誰か助けてください

4

1 に答える 1

1

ajp を試す前に通常の mod_proxy を使用したことがあると思いますが、そうでない場合は試してみてください。

以下は、同じドメインとポートの Apache からページを提供し、特定のエイリアスの Tomcat インスタンスにリダイレクトする仮想ホストを追加するためのサンプル コードです。

<VirtualHost *:80>

    ServerName localhost
    DocumentRoot "d:/apache_test/htdocs/webapp"
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass /tomcatapp http://localhost:8080/tomcatapp
    ProxyPassReverse /tomcatapp http://localhost:8080/tomcatapp

</VirtualHost>

これを使用すると、上部の実際の URL は Tomcat のポートの URL に変わりませんが、リクエストは転送されます。必要に応じて、web.xml に特定の /path の URL マッピングを追加して、リクエストをさらに分離します。

于 2016-04-05T21:49:45.207 に答える