2012-09-13 70 views
2

我已經設置了一個Apache httpd服務器,使用mod_proxy代理Tomcat的請求,監聽端口80.我唯一的問題是靜態圖像和CSS沒有正確顯示。如果我在端口8080上使用Tomcat作爲服務器,則圖像和css顯示正常。任何想法如何顯示它們?謝謝!Apache與Tomcat代理:未顯示圖像

注意:我在Mac上並正在使用Amazon EC2服務器。一個例子是非常受歡迎的。

+0

屬於serverfault.com。 – EJP

回答

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獨立。

感謝和遺憾浪費你的時間。

0

在Apache中有一個htdocs文件夾,其中創建一個名稱與您的項目文件夾相同的文件夾,並粘貼資源並重新啓動服務器。

+1

我同意@taher ... :) –

+0

htdocs文件夾在哪裏?我必須自己創建一個嗎?如果是的話,在哪裏? – OckhamsRazor

+1

您可以在以下位置找到該目錄。 C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ htdocs 路徑可能因您的安裝目錄和htdocs文件夾而異,您需要指定應用程序的根文件夾。例如,如果您的應用程序使用「Web」名稱進行部署,那麼您需要在指定的路徑中創建一個名爲this的文件夾,並且在該文件夾內需要放置靜態資源(如圖像)。希望這可以幫助你。 :) –

0

Apache的錯誤日誌將包含404對圖像,注意所使用的URL的,要麼:

  • 比較它們ProxyPass指令您使用和修復/添加的ProxyPass
  • 將它們複製到正確的您的網絡服務器文檔的子目錄
0

此問題涉及路徑轉換,您可能會爲您的應用程序服務於頂層客戶端/,但相應路徑爲/ 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 

所以你可以在前面的指令塊前面使用這些行。

+0

這是一樣的CSS? – OckhamsRazor

+0

是的,相同的CSS和Javascript – Iman

+0

如果我們有負載平衡器設置,這將如何工作?如何使路徑動態化 – Sridhar