【发布时间】:2011-08-29 03:10:37
【问题描述】:
我将 Spring Security 和 Apache 代理用于 Web 应用程序。使用标准 mod_proxy 时一切正常,但切换到 AJP 代理后,Spring 安全重定向出现问题。
Apache 配置:
<VirtualHost *:80>
ServerName domain.com
ProxyPass / ajp://localhost:8009/Context/
ProxyPassReverse / ajp://localhost:8009/Context/
</VirtualHost>
当我拨打http://domain.com/login 时,我看到了一个登录表单。
当我提交表单时,我会转到 http://domain.com/auth 并获得身份验证。
然后 Spring Security 应该重定向到 http://domain.com/index 但它会重定向到 http://domain.com/Context/index
我怎样才能摆脱那个上下文路径?为什么 Spring Security 到处都添加它?
Spring Security 网站上有一个类似的问题,但没有人回答:
http://forum.springsource.org/showthread.php?95141-Why-is-spring-security-including-the-context-path
附: 谷歌没有找到与这个问题更相关的东西,这似乎很奇怪。我是唯一一个使用 Spring Security + AJP 的人吗?也许这是一个错误的模式?
解决方案:
<VirtualHost *:80>
ServerName domain.com
RewriteEngine on
RewriteRule ^/Context/(.*)$ /$1 [R=301]
ProxyPass / ajp://localhost:8009/Context/
ProxyPassReverse / ajp://localhost:8009/Context/
</VirtualHost>
【问题讨论】:
标签: tomcat spring-security mod-proxy ajp