我已经设置了一个Apache httpd服务器,使用mod_proxy代理对Tomcat的请求,监听端口80.我唯一的问题是静态图像和css没有正确显示。如果我在端口8080上单独使用Tomcat作为服务器,则图像和css看起来很好。任何想法如何显示它们?谢谢!
注意:我在Mac上使用的是Amazon EC2服务器。一个例子非常受欢迎。
答案 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,请注意正在使用的网址: