您部署Web应用程序(在我的案例中是Java EE + Spring MVC,但我认为使用什么Web堆栈并不重要)并将其隐藏在HTTP代理或负载均衡器后面。
代理/平衡器软件可以修复HTTP标头。这不是问题。
但是应用程序本身会将链接放入生成的HTML中:
<a href="http://$HOST:$PORT/$CONTEXT/$PATH">...</a>
<a href="/$CONTEXT/$PATH">...</a>
代理/平衡器可以使用不同的 $ HOST:$ PORT 或 $ CONTEXT 部分。对于使用JSP的Java EE,这段代码解决了这个问题:
<c:url value="$PATH">
${pageContext.request.contextPath}/$PATH
但我想知道Web框架如何获取有关用户请求 $ HOST:$ PORT / $ CONTEXT 的知识,以便可以用HTML呈现?
此信息是否摘录自:
http://en.wikipedia.org/wiki/X-Forwarded-For
非标准事实上的标记?它看起来像:
X-Forwarded-For: client, proxy1, proxy2, ..., proxyN
因此,web框架提取第二参数(在我的示例中为 proxy1 ,或者如果N == 0,则为主机IP),以便为您提供 $ HOST: $ PORT / $ CONTEXT