2016-09-23 3 views
0

I 포트 8080에서 수신하고, 아파치 웹 서버가 포트 80에서 수신하고 443톰캣 아파치 뒤에 아파치는

아파치 프록시 클라이언트를 통해, 바람둥이을 (아파치가 작동, 바람둥이 오류 500를 반환) ajp를 통해 바람둥이로. 이것은 매력처럼 작동합니다.

위 인용문은 잘못되었습니다. 나는 실수로 ajp-protocol을 사용하도록 프록시를 설정한다고 가정 했었지만 실제로는 일반 http를 사용했습니다. 이것은 또한이 질문의 대답으로 이어집니다.

그러나 https를 통해 연결을 시도하면 기록되지 않은 오류 500이 표시되는 보안 연결이됩니다. 어디서나. 내 생각 엔, httpd (443)에 대한 https 연결이 작동하고, ajp-proxy도 작동하지만, Tomcat은 내가 모르는 것을 기대합니다.

나는 이미 포트 8443과 8080에 프록시를 연결하려고 시도했다. 모든 트래픽이 httpd를 통해 어쨌든 리디렉션되기 때문에 내 의견으로는 포트 8080에서 tomcat을 액세스하는 것으로 충분할 것이라고 생각한다. 여기

구성입니다 :

/등/아파치/사이트-가능/기본-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 지시어에 슬래시를 매치하고 다시 시도해보십시오. 사이드 노트에서는 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를 통해 바람둥이로 연결된다고 말했을 때 당신은 모순 된 것입니다. 이것은 매력처럼 작동합니다." 이제는 "ajp를 사용하지 않고 암호화되지 않은 사이트에서 간단한 http-proxy를 수행합니다."라고 말합니다. –

+1

당신은 절대적으로 옳습니다! 나는 그 질문에서 나의 진술을 정정했다. 오류가 더 분명하고 내 측면에만 있기 때문에 질문이 더 필요하면 확신 할 수 없습니다. – zoku