我们的 IT 部门正在尝试配置新的 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 中,用于注销,并由我的所有应用程序共享。
response.sendRedirect("login.jsp?message=You have successfully logged off.");
文件不存在的错误(在 Apache 中,而不是 jboss 中) :/folder1/folder2/AppNamelogin.jsp`
请注意,我的 appname 和 login.jsp 之间没有“/”
文件不存在的错误(在 Apache 中,而不是 jboss 中)
response.sendRedirect("/login.jsp?message=You have successfully logged off.");
:/folder1/folder2/login.jsp 注意缺少 AppName
答案1
不,在块中使用时会隐含第一个参数<Location>
。这种用法是正确的。
ProxyPassReverse
仅用于翻译重定向响应Location
的标题30x
;考虑到您所描述的情况,这可能不是问题。
你应该明确说明路径应该设置为。如果我理解正确的话,请求应该发送到domain.com/jboss/test.jsp
而不是当前的domain.com/test.jsp
,对吗?如果是这样,那么只需更改..
ProxyPass balancer://cluster stickysession=JSESSIONID
..到..
ProxyPass balancer://cluster/jboss stickysession=JSESSIONID
编辑
保留上述内容,但呈现的新信息清楚地表明问题确实出在ProxyPassReverse
-balancer
配置可能/jboss
在BalancerMember
配置中存在路径。
改变..
ProxyPassReverse https://domain.com/jboss/
..到..
ProxyPassReverse https://domain.com/jboss
由于和之间的尾随斜线不平衡,在翻译过程中斜线会被删除Location
,并向客户端发送重定向到/jbossappname
而不是。/jboss/appname
<Location /jboss>
ProxyPassReverse