使用loadbalacer在spring MVC中重定向
我有一个spring MVC应用程序,它托管在服务器S上。客户端C的所有调用都通过loadbalancer L转到S。负载均衡器在服务器S内部使用的url是internalurl.com,客户端使用的url是xyz.com 问题是,当我在mozilla浏览器上点击一个url,比如xyz.com/admin/时,我希望它被重定向到xyz.com/admin/home.html。但是,它将重定向到internalurl.com/admin/home.html,并且由于internalurl.com是负载均衡器的内部,因此我在浏览器地址栏中的“internalurl.com/admin/home.html”中显示“网络访问消息:找不到网站” 对于重定向,我使用:使用loadbalacer在spring MVC中重定向,spring,spring-mvc,filter,url-redirection,http-redirect,Spring,Spring Mvc,Filter,Url Redirection,Http Redirect,我有一个spring MVC应用程序,它托管在服务器S上。客户端C的所有调用都通过loadbalancer L转到S。负载均衡器在服务器S内部使用的url是internalurl.com,客户端使用的url是xyz.com 问题是,当我在mozilla浏览器上点击一个url,比如xyz.com/admin/时,我希望它被重定向到xyz.com/admin/home.html。但是,它将重定向到internalurl.com/admin/home.html,并且由于internalurl.com是
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String strReferer = request.getHeader("Referer");
String strConetextPath = request.getContextPath();
if (strReferer != null && !strReferer.contains(strConetextPath)) {
response.sendRedirect("/requestError.html");
}
// redirect to home.html in case user tries to access /admin/
// in case user is not already logged-in, user will be redirected to login.html
else if (request.getRequestURI().equalsIgnoreCase("/admin/")) {
response.sendRedirect("home.html");
}else
chain.doFilter(req, res);
}
提前感谢。这根本不是SPring MVC的问题。应在代理/负载平衡器处进行处理 因为在内部服务器级别发生的任何重定向都将具有内部服务器URL,客户端/浏览器不知道该URL。因为客户端只知道Web服务器(正如您提到的XYZ.com) 这是一个典型的问题,由代理或负载平衡器使用反向代理概念来处理 例如:在Apache HTTP的情况下,我们使用ProxyPassReverse配置,它将在响应浏览器之前将所有内部服务器url头转换为指向XYZ.com。这将确保浏览器仅调用xyz.com 希望能有帮助
谢谢,JP嗨,JP,在你发表评论后,我检查了反向代理概念,对我来说,这可能是由于loadbalancer配置。这一评论提供了信息。