在HTTP代理或负载平衡器之后,web应用程序如何恢复原始URL?

在HTTP代理或负载平衡器之后,web应用程序如何恢复原始URL?,http,web,proxy,load-balancing,w3c,Http,Web,Proxy,Load Balancing,W3c,您可以部署Web应用程序(在我的例子中是javaee+springmvc,但我认为无论使用什么Web堆栈都没有关系),并将其隐藏在HTTP代理或负载平衡器后面 代理/平衡器软件可以修复HTTP头。这不是问题 但应用程序本身将链接放入生成的HTML中: <a href="http://$HOST:$PORT/$CONTEXT/$PATH">...</a> <a href="/$CONTEXT/$PATH">...</a> 因此,web框架提取第二个

您可以部署Web应用程序(在我的例子中是javaee+springmvc,但我认为无论使用什么Web堆栈都没有关系),并将其隐藏在HTTP代理或负载平衡器后面

代理/平衡器软件可以修复HTTP头。这不是问题

但应用程序本身将链接放入生成的HTML中:

<a href="http://$HOST:$PORT/$CONTEXT/$PATH">...</a>
<a href="/$CONTEXT/$PATH">...</a>
因此,web框架提取第二个参数(在我的示例中为proxy1,如果N==0,则为主机IP),以向您提供可能的副本:$host:$PORT/$CONTEXT

<c:url value="$PATH">
${pageContext.request.contextPath}/$PATH
X-Forwarded-For: client, proxy1, proxy2, ..., proxyN