覆盖c:url的基本URL

时间:2013-05-25 20:09:36

标签: jsp spring-mvc

我将把部署在Tomcat上的Spring MVC Web应用程序隐藏在Apache Web Server后面。我在相同的物理机器上部署了Tomcat和Apache,但Tomcat在端口81上,而Apache在端口80上。

Apache配置为将请求重定向到Tomcat。在我的Web应用程序中,我使用c:url标记(JSTL / core)来正确格式化URL。这在我直接访问Tomcat时工作正常,但是当我通过Apache访问Tomcat时,URL是错误的。

因此,当直接访问Tomcat时,http://localhost:81/MyWebApplication/可以使用Web应用程序,当通过Apache访问时,它是http://sub.domain/

据我所知,问题是Apache发送给Tomcat的请求实际上是http://localhost:81/MyWebApplication/something之类的真实请求,因此在呈现JSP时,c:url是基于这些实际请求构建的确保该应用程序认为它部署在localhost:81

我不想对Apache配置进行任何更改,只是因为在同一台机器上配置相同的方式有很多其他应用程序(不仅是Java),而且它们工作正常。

问题是:

为所有JSP提供明确定义的基本URL的最佳方法是什么?理想情况下,以某种方式将c:url的基本网址更改为我想要使用的正确网址会很棒。

1 个答案:

答案 0 :(得分:2)

如果您控制Tomcat配置,请修改相应的连接器

<Connector ... proxyName="apache-domain" proxyPort="80" />

在Tomcat的server.xml中将真实域和端口传递给应用程序。