反向代理http到tomcat

我已经configuration了一个Apache服务器与SSL和反向代理到一个tomcat

<VirtualHost domain.com:1443> [...] ProxyRequests Off ProxyPreserveHost On ProxyPass / http://local.com:8080/ ProxyPassReverse / http://local.com:8080 SSLEngine on [...] </VirtualHost> 

Tomcat正在监听8080.问题是,tomcat上的应用程序正在redirect请求(HTTP 302 Moved temporairly)。 例如,如果我使用URL https:// domain.com:1443/folder,反向代理启动请求http:// local.com:8080/folder,那么应用程序将redirect到“/ subfolder”,所以最终请求是: http : //domain.com : 1443/folder/subfolder 。 结果是一个400错误的请求错误代码,因为请求是在我的SSL端口上的HTTP。

你知道我怎么能解决这个问题?

提前致谢。

而不是普通的http代理,请使用proxy_ajp 。 调整下面的例子来满足你的需求,也就是说你可以把所有的代码都放到容器中,或者只放在一个名字空间中:

 ProxyRequests off ProxyPassMatch ^/(your_app)(.*) ajp://localhost:8009/$1$2 ttl=120 ping=1 

确保tomcatconfiguration中的server.xml包含一个AJP监听器。 执行者是可选的。

 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> <Connector executor="tomcatThreadPool" port="8009" protocol="AJP/1.3" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />