Apache与Tomcat代理:不显示图像

时间:2012-09-13 02:08:44

标签: spring apache tomcat

我已经设置了一个Apache httpd服务器,使用mod_proxy代理对Tomcat的请求,监听端口80.我唯一的问题是静态图像和css没有正确显示。如果我在端口8080上单独使用Tomcat作为服务器,则图像和css看起来很好。任何想法如何显示它们?谢谢!

注意:我在Mac上使用的是Amazon EC2服务器。一个例子非常受欢迎。

4 个答案:

答案 0 :(得分:1)

此问题涉及路径转换,您可能会将您的应用程序提供给顶级/的客户端,但相应的路径将是/ myapp /(例如)。 在tomcat下运行的Servlet应用程序通常以这种方式设置,以便在一个中提供多个应用程序,您的apache设置如下:

ProxyPass / http://localhost:8080/myapp/
ProxyPassReverse / http://localhost:8080/myapp/

你的后端应用程序(myapp)不知道这个翻译,仍然是它的通常路径。 例如,你的应用程序指的是由位于/ myapp / images /的tomcat中运行的应用程序提供的一些静态图像文件, 您可以做的一种方法是将特殊代理映射与其他重写规则区分开来。

ProxyPass /myapp/images http://localhost:8080/myapp/images

ProxyPassReverse /myapp/images http://localhost:8080/myapp/images

所以你可以在前面的指令块前面使用这些行。

答案 1 :(得分:1)

最后想出来的人 - 请你在读这篇文章时不要踢我。我在Spring 3中使用Apache2,使用Springsource Tool Suite作为IDE。我无法让它运行的全部原因是因为我在我的索引jsp文件中使用它:

<link rel="stylesheet" href="<spring:url value="/resources/styles/foo.css" htmlEscape="true" />" type="text/css"/>

问题是,当在Tomcat 7服务器上运行时,它是完美的。但是,在以tomcat作为容器的apache 2服务器上运行时,此css文件未显示。所以我从/中删除了/resources/styles/foo.css

<link rel="stylesheet" href="<spring:url value="resources/styles/foo.css" htmlEscape="true" />" type="text/css"/>

然后在Apache + Tomcat和Tomcat独立版上完美运行。

非常感谢和浪费你的时间。

答案 2 :(得分:0)

在apache中有htdocs文件夹,创建一个名称与项目文件夹相同的文件夹,并在其中粘贴资源并重新启动服务器。

答案 3 :(得分:0)

您的apache错误日志将包含图片的404,请注意正在使用的网址:

  • 将它们与您使用的ProxyPass指令进行比较并修复/添加ProxyPass
  • 将它们复制到webservers documentroot的正确子目录