前面讲到项目中专门有一个下载的程序,处理附件的下载,但是最终产生了问题,从而通过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…