我将在 Tomcat 上部署我的 Spring MVC Web 应用程序,隐藏在 Apache Web 服务器后面。我将 Tomcat 和 Apache 都部署在同一台物理机上,但 Tomcat 位于 81 端口,而 Apache 位于 80 端口。
Apache 配置为将请求重定向到 Tomcat。在我的 Web 应用程序中,我使用c:url
标签 (JSTL/core) 来正确格式化 URL。当我直接访问 Tomcat 时这很好用,但是当我通过 Apache 访问 Tomcat 时,URL 是错误的。
因此,当直接访问 Tomcat 时,Web 应用程序在 可用 http://localhost:81/MyWebApplication/
,而当通过 Apache 访问时,它是http://sub.domain/
.
据我了解,问题在于 Apache 发送给 Tomcat 的请求实际上是真实的http://localhost:81/MyWebApplication/something
,所以当 JSP 被渲染时,c:url
是基于这些真实的请求构建的,并确保应用程序认为它部署在localhost:81
.
我不希望对 Apache 配置进行任何更改,因为在同一台机器上还有一堆其他应用程序(不仅是 Java)以相同的方式配置并且它们工作正常。
问题是:
让所有 JSP 都可以使用显式定义的基本 URL 的最适当方法是什么?理想情况下,以某种方式将c:url
' 的基本 URL 更改为我想要使用的正确 URL 会很棒。