2012-12-03 62 views
1

我已經儘可能地四處張望,我已經達到了完全難倒的地步。mod_proxy_html配置 - 截斷問題

我正在與Apache在頂部的紅帽服務器,我使用的是作爲代理外界和其他兩個應用服務器之間坐下,它與完全不同的基地(一個IIS,一個Linux的)。

這兩個服務器都有正確的內部網絡URL,駐留在它們上面的應用程序都能理解。應用程序(DotNetNuke和WordPress派生)都生成HTML 5頁面,其中包含正確/適當的標記,並在代理之外(即內部網絡上)正確呈現。

但是,當通過代理傳遞這些頁面時,結果似乎在CSS和JavaScript文件末尾缺少字符。

所以(實際上),JavaScript代碼是這樣的:

... {return f})})(window); 

或CSS是這樣的:

... 
background-position:center left; 
background-repeat:no-repeat; 
} 

...變成這樣的代碼:

... {return f})})(window 

或者像這樣:

... 
background-position:center left; 
background-repeat:no-re 

代理設置是用的mod_proxy和mod_proxy_html Apache模塊 - 我相當肯定,我遇到的問題是mod_proxy_html的配置,目前看起來是這樣做的:

ProxyHTMLEnable On 
ProxyHTMLBufSize 102400 
ProxyHTMLExtended On 
ProxyHTMLStripComments Off 
ProxyHTMLDocType "<!DOCTYPE html>" 
ProxyHTMLMeta Off 
#ProxyHTMLLogVerbose On 
#LogLevel Debug 

<Location /xxxxx> 
     ProxyPass    http://www.example.com 
     ProxyPassReverse  http://www.example.com 
     ProxyHTMLURLMap   http://www.example.com /xxxxx 
     ProxyHTMLURLMap  //xxxxx/ 
</Location> 

<Location /> 
     ProxyPass    http://10.11.0.51/ 
     ProxyPassReverse  http://10.11.0.51/ 
</Location> 

在這裏瀏覽Apache文檔:http://httpd.apache.org/docs/2.4/en/mod/mod_proxy_html.html - 但是不會提供任何直接的線索。

有沒有人遇到過同樣的問題?還是有一些我很想念的東西?

任何幫助將感激地收到!

更新時間:

最終,這個問題似乎是在解析所有內容爲UTF-8編碼mod_proxy_html的默認行爲(當一些內容是不是 - 這不能修改,儘管最好的努力)。

爲此,一些工作之後,mod_substitute代替(只解析文本,文本,忽略文件編碼),旁邊一個緩存解決方案,以加快加載時間。

恥辱mod_proxy_html沒有爲這個項目工作 - 但找到了一種方法做到底!

+0

奇怪更新到這一點 - 我注意到,該代碼在Linux中(如鉻,鉻返回任何瀏覽器,Firefox)被截斷,但在Windows 7環境中,並未在所有瀏覽器中截斷(例如,Internet Explorer,Chrome和Safari均返回截斷文件 - Firefox返回完整文件)。正在提出要求? – Pete

+0

最後解決的問題(通過不使用此模塊實現最終結果的方式) - 但我無法關閉該問題,因此請不要回答! – Pete

回答

1

修改

ProxyHTMLDocType "<!DOCTYPE html>" 

ProxyHTMLDocType "<!DOCTYPE html>" XML 

注意的

ProxyHTMLStripComments Off 

這並不適用於所有評論工作。還沒有想出這個解決方案。

+0

這很有趣 - 如果我理解正確,強制mod_proxy_html相信它解析XML而不是HTML? – Pete

+0

是的,確切地說。就我個人而言,我放棄了mod_proxy_html,它只是不值得痛苦,因爲它重新解析頁面,然後生成一個新的頁面。現在我正在使用mod_substitute來進行純文本搜索並取代頁面輸出,更簡單,更快速,做我想做的事情。 – Niki