提问者:小点点

带有Tomcat代理的Apache:不显示图像


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

注意:我在Mac上并且正在使用Amazon EC2服务器。非常欢迎举个例子。


共3个答案

匿名用户

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

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

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

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

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

因此,您可以在前面的指令块前面使用这些行。

匿名用户

终于明白了——当你读到这个的时候,请不要踢我。我正在使用带有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文件没有显示出来。所以我从/资源/样式/foo. css中删除了/

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

然后,它在Apache Tomcat和Tomcat独立上完美运行。

谢谢,抱歉浪费了你的时间。

匿名用户

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