我已经设置了一个Apache httpd服务器,使用mod_proxy代理对Tomcat的请求,监听端口80。我唯一的问题是静态图像和css显示不正确。如果我在端口8080上单独使用Tomcat作为服务器,图像和css看起来很好。有什么想法如何显示它们吗?谢谢!
注意:我在Mac上并且正在使用Amazon EC2服务器。非常欢迎举个例子。
这个问题指的是路径转换,你可能会将你的应用程序提供给顶层的客户端/,但相应的路径将是 /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文件夹,它创建一个名称与您的项目文件夹相同的文件夹,并在其中粘贴资源并重新启动服务器。