2013-01-21 70 views
22

我有2個Apache服務器設置。一個在80端口,另一個在8077端口。我想通過反向代理在8077上看到服務器上的所有內容。目前,我已經有了:ProxyHTML重寫URL

ProxyPreserveHost Off 
ProxyHTMLInterp On 
ProxyPass /translate/ http://www.example.com:8077/ 
ProxyPassReverse /translate/ http://www.example.com:8077/ 
ProxyHTMLURLMap//translate/ 

這可以讓我到現場的初始頁面,但鏈接到圖片,CSS和其他網頁不工作。

例如HTML中的CSS顯示爲

/css/style.css 

,我其實希望它是

/translate/css/style.css 

對於它從8077服務器拿起文件。我可以用當前的設置做些什麼來實現這個目標?

回答

28

好吧,這是我最後做得到它的工作

ProxyPass /translate/ http://www.example.com:8077/ 
ProxyPassReverse /translate/ http://www.example.com:8077/ 

ProxyHTMLURLMap http://www.example.com:8087 /translate/ 

<Location /translate/> 
    ProxyPassReverse/
    SetOutputFilter proxy-html 
    ProxyHTMLURLMap http://www.example.com:8077 /translate/ 
    ProxyHTMLURLMap//translate/ 
    ProxyHTMLURLMap /translate/ /translate/ 
    RequestHeader unset Accept-Encoding 
</Location> 

這似乎運作良好。 ProxyHTMLURLMap/translate/line僅用於翻譯一些基於「引用者」的URL,導致一些頁面最終嘗試直接從8077端口服務器提供服務。

+0

好的解決方案。儘管如此,這種方法仍然無法幫助我使用CSS和JS中的鏈接..他們不會被代理。 – LauriK

+0

這個文件是conf文件嗎? – lrn2prgrm