我一直在到处寻找,但找不到针对以下情况的明确解决方案:
我们有一个 web 应用程序(Grails + Spring Security)在 apache 后面的 tomcat 中运行。部分应用程序需要在 https 上运行,因此使用 Spring Security Channel Security,每当您导航到应用程序的安全部分时,Spring 都会使用 302 状态代码将您重定向到 https。
现在,tomcat 设置为了解 https 和证书,因此它知道如何处理 ssl。事实上,当通过直接访问 url 和端口直接访问 tomcat 来绕过 apache 时,一切正常 100%。
现在将apache放在tomcat前面时出现了问题。我们目前拥有的 apache 配置适用于应用程序的非安全部分。我们正在使用 mod_jk 代理 apache 和 tomcat。
但是,一旦您尝试转到应用程序的安全部分,Spring 就会重定向您,它会命中
<VirtualHost _default_:443> ... </VirtualHost>
apache配置的一部分......这就是问题的开始。
根据我的阅读,apache 可以通过 mod_jk 将 ssl 处理传递给 tomcat。但我们似乎无法获得正确的配置。由于 tomcat 已经为 ssl 设置好了,它知道证书在哪里,并且 Spring Security 设置好了,我们希望 tomcat 处理所有的 ssl,而 apache 只是将它典当给 tomcat。
这是可能的,还是我错过了什么?有人对如何设置有明确的说明吗?任何帮助将不胜感激。
我们正在使用 Apache 2.2 和 tomat 7.0.27
谢谢