我将把部署在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
的基本网址更改为我想要使用的正确网址会很棒。
答案 0 :(得分:2)
如果您控制Tomcat配置,请修改相应的连接器
<Connector ... proxyName="apache-domain" proxyPort="80" />
在Tomcat的server.xml中将真实域和端口传递给应用程序。