2016-09-23 5 views
0

私はポート8080でリッスンおよびApache HTTPDがポート80でリッスンし、443のTomcatはApacheの背後にhttpdが

のhttpdプロキシクライアントを介し、Tomcatを持っている(HTTPDの作品、Tomcatはエラー500を返します) ajpを経由してTomcatへ。これは魅力のように機能します。

上記の引用文は間違っています。私は誤って、ajpプロトコルを使用するようにプロキシを設定すると仮定しましたが、私は実際にはhttpを使用しました。 これもこの質問の答えにつながります。

しかし、https経由で接続しようとすると、ログに記録されていないエラー500が表示されます。どこでも。私の推測は、httpd(443)へのhttps接続が機能していることです.ajp-proxyも動作しますが、Tomcatは私が知らないことを期待しています。

私はすでにプロキシをポート8443と8080に接続しようとしました。私の意見では、すべてのトラフィックがhttpd経由でリダイレクトされるため、ポート8080でTomcatにアクセスするのに十分です。

は/ etc/apache2の/サイト利用可能/デフォルト-SSL

<IfModule mod_ssl.c> 
    ErrorLog /var/log/apache2/ssl_engine.log 
    LogLevel error 

    NameVirtualHost *:443 

    <VirtualHost *:443> 
      ServerName www.doma.in 
      ServerAlias doma.in 

      ServerSignature Off 
      SSLEngine on 

      SSLCertificateFile /etc/ssl/certs/ssl_certificate.crt 
      SSLCertificateKeyFile /etc/ssl/certs/ssl_certificate.key 
      SSLCertificateChainFile /etc/ssl/certs/intermediate_ca.crt 

      ProxyPass/ajp://localhost:8080/ retry=0 timeout=240 
      ProxyPassReverse/ajp://localhost:8080/ 
    </VirtualHost> 
</IfModule> 

/etc/tomcat7/server.xml

<?xml version='1.0' encoding='utf-8'?> 
<Server port="8005" shutdown="SHUTDOWN"> 
    <Listener className="org.apache.catalina.core.JasperListener" /> 
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 

    <GlobalNamingResources> 
     <Resource name="UserDatabase" auth="Container"     type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> 
    </GlobalNamingResources> 

    <Service name="Catalina"> 
     <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" /> 

     <!-- Define an AJP 1.3 Connector on port 8009 --> 
     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URLEncoding="UTF-8" /> 
     <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8080" URLEncoding="UTF-8" /> also tried this, but same result. --> 

     <Engine name="Catalina" defaultHost="localhost"> 
      <Realm className="org.apache.catalina.realm.LockOutRealm"> 
       <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> 
      </Realm> 

      <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"></Host> 
     </Engine> 
    </Service> 
</Server> 

残念ながら、私ができる:ここでは

は構成ですいずれのログにもエラーが表示されないため、ログを提供しません。

この作品を作成する方法についてのご意見はありますか?

敬具 Z

+0

'ProxyPass/ajp:// localhost:8080 /'のようなproxypassディレクティブでスラッシュをマッチングして、もう一度やり直してください。 sidenoteではRewriteEngineはまったく必要ないので、削除することもできます。 –

+0

@ ezra-s紛失したスラッシュを追加しました。残念ながら、これは結果を変えなかった。 RewriteEngineは、私がいくつかのURLを調整するために使用するブロックの残りの部分です(テストしているURLには適用されません)。 – zoku

答えて

1

答えは非常に簡単でした。私はajpを使用しませんが、暗号化されていないサイトでは単純なhttp-proxyを行います。

だから、最終的に働いていたコードはでした:

<IfModule mod_ssl.c> 
    ErrorLog /var/log/apache2/ssl_engine.log 
    LogLevel error 

    NameVirtualHost *:443 

    <VirtualHost *:443> 
      ServerName www.doma.in 
      ServerAlias doma.in 

      SSLEngine on 
      SSLCertificateFile /etc/ssl/certs/ssl_certificate.crt 
      SSLCertificateKeyFile /etc/ssl/certs/ssl_certificate.key 
      SSLCertificateChainFile /etc/ssl/certs/intermediate_ca.crt 

      ProxyPass/http://127.0.0.1:8080/ 
      ProxyPassReverse/http://127.0.0.1:8080/ 
    </VirtualHost> 
</IfModule> 

パフォーマンスワイズAJPプロトコルは、しかし、このことが好ましいであろう。

+0

私はそれを正しく理解すれば、あなたは "httpdがajpを経由してtomcatにクライアントを代理してくれます。これは魅力的です"と言ったとき、あなたは矛盾します。 「今はajpを使用せず、暗号化されていないサイトで単純なhttpプロキシを実行します」と言います。 –

+1

あなたは絶対に正しいです!私は質問から声明を修正しました。エラーがそれほど明白で、私の側だけであったので、質問がもう必要であるかどうかは分かりません。 – zoku

関連する問題