我使用Spring Security和Apache代理来进行网站应用程序的开发。当使用标准的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 P.S. 奇怪的是,Google找不到更多与此问题相关的内容。难道只有我在使用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>