我们的IT正在尝试configuration一个新的apache / jboss / apj安装程序。 当我浏览到http://domain.com/jboss/test.jsp
并回request.getRequestURL()我得到
http://domain.com/test.jsp (没有jboss)我部署的应用程序遇到了很多404的正因为如此。
这就是我们的IT部门所设置的ProxyPassReverse。
<Location /jboss> ProxyPass balancer://cluster stickysession=JSESSIONID ProxyPassReverse https://domain.com/jboss/ </Location>
不应将指令设置为:
<Location /jboss> ProxyPass balancer://cluster stickysession=JSESSIONID ProxyPassReverse /jboss https://domain.com/jboss/ </Location>
编辑当我使用response.sendRedirect时,问题会出现
在我们使用的旧服务器上
response.sendRedirect("login.jsp?message=You have successfully logged off.");
让事情与我必须重新编码为新的代理工作
response.sendRedirect("/jboss/AppName/login.jsp?message=You have successfully logged off.");
我的应用程序不再是可移植的或可重复使用后者的语法。 该行在我的框架servlet注销,并由我的所有应用程序共享。
错误(在Apache中,不是jboss)
response.sendRedirect("login.jsp?message=You have successfully logged off."); 文件不存在:/ folder1 / folder2 / AppNamelogin.jsp
请注意我的appname和login.jsp之间没有“/”
错误(在Apache中,不是jboss)
response.sendRedirect("/login.jsp?message=You have successfully logged off."); 文件不存在:/folder1/folder2/login.jsp注意AppName缺失
不; 第一个参数在<Location>块中使用时是隐含的。 这个用法是正确的。
ProxyPassReverse仅用于在30xredirect响应上转换Location标题; 根据你所描述的,这可能不是问题。
您应该明确说明path应设置为什么。 如果我理解你的话,请求应该发送到domain.com/jboss/test.jsp而不是当前的domain.com/test.jsp ,对吧? 如果是这样的话,那就改变..
ProxyPass balancer://cluster stickysession=JSESSIONID
..至..
ProxyPass balancer://cluster/jboss stickysession=JSESSIONID
编辑
留下上面的地方,但提供的新信息明确表明,问题确实与ProxyPassReverse – balancerconfiguration可能在BalancerMemberconfiguration/jbosspath。
更改..
ProxyPassReverse https://domain.com/jboss/
..至..
ProxyPassReverse https://domain.com/jboss
当Location转换发生时,斜杠被剥离,由于<Location /jboss>和ProxyPassReverse之间不平衡的尾部斜杠,发送客户端redirect到/jbossappname而不是/jboss/appname 。