redirect后,Apache反向代理会跳回到不安全的协议

我安装了一个反向代理Apache服务器,它处理一个tomcat的SSLencryption。 我们有一个struts Web应用程序,每次使用response.sendRedirect() ,应用程序都会回到正常的HTTP协议,而不是停留在HTTPS上。 应用程序必须使用两种协议运行,并且我无法通过tomcat容器处理SSL。

我可以使用HTTPS并通过链接和操作进行浏览。 但是如果我来到一个使用redirect的动作,它将只是HTTP。 为什么?

 SSLProxyEngine [off|on] # (Differs between the ssl and the other normal conf) ProxyPreserveHost On ProxyPass / http://mysite:1234/ ProxyPassReverse / http://mysite:1234/ 

这是我的configuration。 我想在SSLconfiguration切换httphttps ,但导致这样的:

错误的网关

代理服务器收到来自上游服务器的无效响应。 此外,尝试使用ErrorDocument处理请求时遇到502错误网关错误。

我如何获得redirect到HTTPS?

如果sendRedirect使用相对path,Tomcat将添加包括scheme(http / https)和servername的绝对元素。

计划将默认为http,除非您覆盖它。 服务器名将来自你已经仔细通过的主机头。

我有同样的问题,并使用一个新的Tomcat连接器(沿着现有的一个)在一个单独的端口覆盖的scheme,并设置端口好措施:

 <Connector port="8443" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="20000" scheme="https" proxyPort="443"/> 

然后在Apache中,SSL虚拟主机具有:

 ProxyPass / http://<tomcat_server>:8443/ 

普通的HTTP虚拟主机继续使用现有的连接器端口(8080)

或者,您可以在调用sendRedirect()时硬编码redirect位置,但显然不灵活。