我有一個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