前面講到項目中專門有一個下載的程序,處理附件的下載,但是最終產生了問題,從而通過IHS來代替該功能,而直接處理靜態文件的下載。
處理步驟:
a) 修改: /opt/IBM/HTTPServer/Plugins/config/webserver1/plugin-cfg.xml 文件,
將其中的:
<UriGroup Name=“default_host_server1_zxwzappNode01_Cluster_URIs”>
<Uri AffinityCookie=“JSESSIONID” AffinityURLIdentifier=“jsessionid” Name=“/qyww/*”/>
<Uri AffinityCookie=“JSESSIONID” AffinityURLIdentifier=“jsessionid” Name=“/cms/*”/>
<Uri AffinityCookie=“JSESSIONID” AffinityURLIdentifier=“jsessionid” Name=“/fileStorage/*”/>
</UriGroup>
中的高亮部分刪除,改成如下:
<UriGroup Name=“default_host_server1_zxwzappNode01_Cluster_URIs”>
<Uri AffinityCookie=“JSESSIONID” AffinityURLIdentifier=“jsessionid” Name=“/qyww/*”/>
<Uri AffinityCookie=“JSESSIONID” AffinityURLIdentifier=“jsessionid” Name=“/cms/*”/>
</UriGroup>
表示,屏蔽所有針對fileStorage目錄訪問的請求,都不會轉發到WAS伺服器上,而是直接通過IHS伺服器進行處理。
這裡需注意:如果WAS應用中有 /* 的應用這種配置,則該項修改會無效,因為 /* 表示所有的路徑都必須走WAS應用伺服器,就會導致無法配置動靜分離。
b) 修改: /opt/IBM/HTTPServer/conf/ httpd.conf 文件,在該文件的最後加上:
Alias /fileStorage “/nfs/datafile/”
表示,所有針對 fileStorage 目錄訪問的請求,都會通過 IHS伺服器轉發到 伺服器的 /nfs/datafile/ 目錄下去訪問。 而 /nfs/datafile/ 目錄下的文件就是我們所有的附件、靜態文件的存放目錄。
大家仔細研究/plugin-cfg.xml 可能會發現,只要是我們在WAS下部署了的應用,都會在這個文件中出現一個訪問目錄。 如果大家用第一種方式配置動靜分離,可能會發現,這個文件會變化非常大,裡面只要是涉及到動態需要Java處理的路徑,在這個裡面都會重新生成一個Uri。 例如 *.jsp ,XXservlet 等。
所以,我們有個簡單的方法來實現動靜分離, 那就是直接修改plugin-cfg.xml 這個文件, 把必須要WAS處理的 路徑都加入到這個文件中。 然後把靜態的文件類型以及文件路徑都剔除出去。 例如 *.jpg , *.js 這種,然後把這些文件全部放到IHS 的靜態化目錄下。這樣IHS 就會把靜態化的文件先處理了,然後動態的請求URL再轉發給WAS處理。
比較好的一個設計思路就是,把所有的靜態文件,例如圖片,JS等,都放到一個統一的目錄下,各個應用中要用的話,就統一引用這個目錄下的文件,這樣,靜態化的時候,只需要對這個應用目錄進行靜態化,其他的應用配置就基本上不用改了,否則的話你把所有的需要動態處理的路徑都列出來也是非常麻煩的一個事情,萬一列少了一個,就會導致請求處理不了。
以下文章點擊率最高
Loading…