我有一个tomcat,侦听端口8080和apache httpd的监听端口80和443Tomcat的Apache的背后通过SSL的httpd(httpd的工作,Tomcat的返回错误500)
的httpd的代理客户端通过到tomcat通过ajp。这像一个魅力。
我在上面引用的陈述是错误的。我错误地认为我将代理设置为使用ajp协议,但我确实使用纯http。 这也导致了这个问题的答案。
但是,如果我尝试通过https连接,我会得到一个安全的连接,显示一个错误500,不记录任何地方。我的猜测是,httpd(443)的https连接正在工作,ajp-proxy也可以工作,但tomcat期望我不知道的东西。
我已经尝试连接代理端口8443和8080在我看来,这将足以为Tomcat将在8080端口访问,因为所有流量重定向通过反正的httpd。
下面是配置:
的/ 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>
可惜我不提供任何日志,因为错误没有出现在任何日志中。
关于如何使这项工作的任何想法?
真诚 ž
通过在代理通行指令(如ProxyPass/ajp:// localhost:8080 /')中匹配斜杠并重试。在旁注中,根本不需要RewriteEngine,所以你也可以删除它。 –
@ ezra-s我添加了缺少的斜线。不幸的是,这并没有改变结果。 RewriteEngine是我用于某些url调整的块的剩余部分(对于我测试的URL不会生效)。 – zoku