首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>本站原创>linux原创>文章内容
用mod_gzip对Apache1.3做Web压缩
来源:www.vfocus.net 作者:vitter 发布时间:2009-08-18  

by:vitter@safechina.net
blog:blog.securitycn.net

一、安装

1.下载源程序

可以从http://sourceforge.net/下载mod_gzip(这个模块已经很久没有维护了,apache 2.x已经内置有mod_deflate压缩模块)的源程序,使用源

程序编译生成Apache的模块(Module)。

2.解压源程序

tar -zxvf mod_gzip-1.3.26.1a.tgz

3.编译

进入源程序所在的目录进行编译,生成相应的动态链接库。编译需要指定参数APXS的相应位置:

make APXS=/usr/local/apache/bin/apxs

但是有报错,以下是编译mod_gzip报的错:
make APXS=/usr/local/apache/bin/apxs

/usr/local/apache/bin/apxs -Wc,-Wall,-O3,-fomit-frame-pointer,-pipe -c mod_gzip.c mod_gzip_debug.c mod_gzip_compress.c -o

mod_gzip.so
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -I/usr/include/gdbm -DUSE_HSREGEX -fpic -DSHARED_MODULE -I/usr/local/apache/include -Wall,-

O3,-fomit-frame-pointer,-pipe -c mod_gzip.c
cc1: error: unrecognized command line option "-Wall,-O3,-fomit-frame-pointer,-pipe"
apxs:Break: Command failed with rc=1
make: *** [build] Error 1

只好把Makefile中的:-Wall,-O3,-fomit-frame-pointer,这几个选项去掉,然后编译就通过了。
我的gcc版本:
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-

threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-

libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin -

-with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux
Thread model: posix
gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)

(去了那几个选项也没什么影响,配置后重启已经gzip压缩了)

将mod_zip安装到Apache服务器中,其中也要指定APXS的具体位置:

make install  APXS=/usr/local/apache/bin/apxs

4.调用mod_gzip模块

在Apache的配置文件httpd.conf中增加LoadModule参数,调用mod_gzip模块。

LoadModule gzip_module modules/mod_gzip.so

5.测试

运行以下命令测试安装是否成功:

/apache/bin/apachectl configtest

如果出现“Syntax OK”,则说明Apache中已经成功安装上mod_gzip的压缩模块了。

二、Apache中关于mod_gzip的配置

修改Apache的配置文件httpd.conf:

1.增加mod_gzip模块的调用

LoadModule gzip_module modules/mod_gzip.so

2.开启压缩功能

mod_gzip_on Yes

3.设置压缩文件的最小值(bytes)

mod_gzip_minimum_file_size 1000

4.设定压缩文件的最大值(bytes)

mod_gzip_maximum_file_size 1500000

5.最大占用内存(bytes)

mod_gzip_maximum_inmem_size 60000

如果您是安裝 mod_gzip 1.3.19.x 的版本,该设定值会被自动限定 60000 的大小。

6.设定压缩文件的临时目录

mod_gzip_temp_dir /tmp/mod_gzip

7.设定是否保持压缩的工作临时文件

mod_gzip_keep_workfiles No

8.设定各种需要压缩的文件及扩展名

mod_gzip_item_include file \.htm$
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.php3$
mod_gzip_item_include file \.cgi$
mod_gzip_item_include mime ^text/html$
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include handler proxy-server

mod_gzip_item_exclude mime ^image/
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude file \.css$
mod_gzip_item_exclude file \.zip$
mod_gzip_item_exclude file \.gz$
mod_gzip_item_exclude file \.exe$
mod_gzip_item_exclude file \.mp3$
mod_gzip_item_exclude file \.pdf$
mod_gzip_item_exclude file \.rar$

mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory

mod_gzip_item_exclude
mod_gzip_item_include
指定 mod_gzip 过滤器。決定何种文件格式要進行压缩或不压缩。

   mod_gzip_item_exclude -> 表示該文件格式不启用压缩功能。

   mod_gzip_item_include -> 表示該文件格式要启用压缩功能。

9.指定针对 HTTP 的何种资料串模式进行压缩

mod_gzip_handle_methods GET

10. 指定浏览器使用的 HTTP 协议版本

mod_gzip_min_http 1000

当浏览器使用的 HTTP 协议版本大于等于此设定值是,才才会进行压缩动作。

   1000 = HTTP/1.0, 1001 = HTTP/1.1, ... 依此类推。

11.log记录

LogFormat "%h %l %u %t /"%V %r/" %<s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n -< Out:%

{mod_gzip_output_size}n = %{mod_gzip_compression_ratio}n pct." common_with_mod_gzip_info2
自定 Log-file 的格式和名称。

CustomLog logs/mod_gzip.log common_with_mod_gzip_info2
指定 Log-file 的存放位置以及要使用的格式名称。如果您有使用 VirtualHost 且在其中指定 CustomLog 的話,請将此行注释。因每个 Host

只能使用一个 CustomLog 設定項。

至于其他的设定格式,请自行参照 mod_gzip.conf 中的范例。

12.在crontab中加入清空临时文件的设置:

23 23 * * * (/usr/bin/find /tmp/mod_gzip_tmp -mtime +0 |/usr/bin/xargs rm -f)

三、常见问题及解决方法

1.解决调用标准zlib问题

如果在编译mod_gzip的时候没有指定zlib类库的具体位置,那么它默认路径就是/usr/local/lib,当你的zlib不在这个目录下面的时候,就会报

如下错误提示:

Cannot load /httpd/modules/mod_gzip.so into server/httpd/modules/mod_gzip.so: undefined symbol: top_module (或者是deflate)

解决方法就是,在编译mod_gzip的时候,编辑Makefile文件增加两个参数,分别指向zlib的存放目录:

INC=-I/usr/includeLIB=-lz -L/usr/lib

编辑ld.so.conf文件,在其中增加存放zlib标准类库的具体目录,然后运行ldconfig。

这样更改以后,Apache就不会上述出现问题了。

2.Apache中jk2模块有可能和mod_gzip冲突

这种现象会出现在Apache2、jk2及mod_gzip2.0.40配合的时候。最简单的解决办法是,改变应用环境的版本,使用Apache1.3、jk及mod_gzip1.3

配合就会避免产生这种冲突。

3.实现对servlet的压缩

我们在httpd.conf文件中增加相应的压缩配置文件,就可以实现对servlet进行压缩了。

mod_gzip_item_include handler jakarta-servlet
mod_gzip_item_include handler jakarta-servlet$
mod_gzip_item_include handler ^jakarta-servlet
mod_gzip_item_include handler ^jakarta-servlet$
mod_gzip_item_include handler ^^jakarta-servlet$


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·OPENVPN安装手册
·openssh记录sftp详细日志,并chr
·ssh-3.2记录sftp日志,并且chroo
·用linux构建仗剑江湖mud游戏服务
·Linux高可用(HA)集群笔记heartbe
·关于日志记录系统设计思想
·unix入侵及防御心得(一)(2)
·unix入侵及防御心得(一)(1)
·linux下的Informix安装配置
·Informix的数据库优化
·Linux下apache运行mysql,cgi,p
·Linux下安装Oracle817完美解决版
  相关文章
·lvs+heard负载均衡文档(DR)
·openssh记录sftp详细日志,并chr
·Linux高可用(HA)集群笔记heartbe
·在 RHEL3 上安装 Oracle 10g
·OPENVPN安装手册
·Informix的数据库优化
·linux下的Informix安装配置
·Linux下apache运行mysql,cgi,p
·Linux下安装Oracle817完美解决版
·ssh-3.2记录sftp日志,并且chroo
·改的一个非GBK的JSP的webshell
·unix入侵及防御心得(一)(2)
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved