`
liuhaixiao
  • 浏览: 143690 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

apahce2.2.4 gzip压缩以及支持中文目录

阅读更多

需求一: 提高apache2.2.4 的访问速度,开启gzip压缩模块

解决办法:

 参考地址1:http://blog.penner.cn/2007/04/04/apache2-mod_deflate.html

 参考地址2:http://bbs.51cto.com/thread-499764-1.html

 监测是否支持gizp 压缩 http://gzip.zzbaike.com/

          Apache启用deflate压缩在 apache 1.3 版本,大家常用 mod_gzip 对输出内容进行压缩,现在主流的浏览器都支持 gzip 解压缩。

          在 apache2 下,这个模块换名为 mod_deflate,对应的模块文件名是 mod_deflate.so。下面描述一下在 Apache 2 下如何启用并配置 mod_deflate 模块。默认安装的 Apache 不管是 Windows 还是 Linux/Unix,都是不启用该模块的, Linux/Unix 下甚至不带该模块,你需要手工编译这个模块。

         下面我们分别介绍在 Windows 和 Linux 操作系统下如何启用并配置 mod_deflate 模块。在 Windows 下采用安装程序安装的 Apache 服务器已经带有 deflate 所需要的模块 mod_deflate.so 和 mod_headers.so,我们只需要在 httpd.conf 配置文件中启用并进行相关的配置即可,配置如下:

LoadModule deflate_module modules/mod_deflate.so

LoadModule headers_module modules/mod_headers.so

# Insert filter SetOutputFilter DEFLATE

# Netscape 4.x has some problems...

BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems

BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine

# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48

# the above regex won't work. You can use the following

# workaround to get the desired effect:

BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Don't compress images

SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don't deliver the wrong content

eader append Vary User-Agent env=!dont-vary

        而如果是 Linux/Unix 操作系统,如果你没有在编译安装的过程中将所需要的两个模块 mod_deflate 和 mod_headers 编译进去的话,那就稍微有点麻烦,首先我们先看如何在编译安装 Apache 过程中也同时编译这两个模块,请在执行 configure 程序时增加两个参数分别是: # ./configure --enable-deflate --enable-headers 这样在编译完 Apache 后就可以直接在 httpd.conf 中启用并配置 deflate 模块了,配置的方法跟 Windows 平台下是相同的。如果说您的 Apache 已经在运行了,不想再重新编译一次,那也可以选择只编译 deflate 模块所需的文件 mod_deflate.c 和 mod_headers.c。

       这两个文件位于 {apache-src}/modules/filters/ 目录下(其中 {apache-src} 为 apache 源文件所在的目录)。使用如下命令来单独编译这两个源文件。

    # {apache-bin}/apxs -i -a -c {apache-src}/modules/filters/mod_deflate.c

    # {apache-bin}/apxs –i –a –c {apache-src}/modules/filters/mod_headers.c

When install the header module the src directory is {apache-src}/modules/metadata/mod_headers.c So we need change the command as follows:{apache-bin}/apxs -i -a -c {apache-src}/modules/metadata/mod_headers.c 其中 {apache-bin} 为 Apache 安装目录下的 bin 目录,接下来在 httpd.conf 直接配置该模块即可。

      很多时候你在单独编译 deflate 模块的时候可能会碰到编译错误,提示是: Cannot load /opt/apache/modules/mod_deflate.so into server: /opt/apache/modules/mod_deflate.so: undefined symbol: deflate 解决的方法如下:编辑 /usr/local/apache2/bin/apr-config 文件修改其中的 LDFLAGS 值为 "-lz"然后再重新编译 mod_deflate 模块,apxs -ica mod_deflate.c 即可。为了省却不必要的麻烦,请尽量在编译安装时直接加上 --enable-deflate --enable-headers 参数。

 

需求二: apache2.2.4 支持中文目录

参考地址:http://blog.freebug.org/?p=212

 

解决办法:

Apache自身并不支持中文目录,但是目前日本的webdev提供了mod_encoding插件来支持多字节目录。
在AS5和Everest0.5pre2版本上测试通过,记录如下:
1)首先确定安装了httpd-devel包。如果没有安装之
2)从官方分别下载基本包和补丁包

#wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
#wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616

或者可以下载文末提供的已经打好补丁的压缩包
3)解压基本包,并用mod_encoding.c.apache2.20040616替代基本包里的mod_encoding.c

#tar -xzf mod_encoding-20021209.tar.gz
#cd mod_encoding-20021209
#cp -f ../mod_encoding.c.apache2.20040616  mod_encoding.c
4)编译安装iconv_look库

# cd mod_encoding-20021209/lib/
# ./configure && make && make install
#echo “/usr/local/lib” >>/etc/ld.so.conf.d/local.conf
#ldconfig
5)编译安装mod_encoding模块

#cd mod_encoding-20021209
#./configure –with-apxs=/usr/sbin/apxs –with-iconv-hook=/usr/local/include
#make

注:如果5)步骤出现下面的报错

mod_encoding.c:235: error: ‘regex_t’ undeclared (first use in this function)

请在mod_encoding.c文件中加上regex.h头,也就是加入
#include <regex.h>
一行。然后再编译。
6)安装动态库
如果前面步骤都没有错误,则应该在当前目录能看到mod_encoding.o文件,接下来该目标文件做成共享的动态库

# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook

将生成的mod_encoding.so文件拷贝到Apache的动态模块库目录中去

cp mod_encoding.so /usr/local/httpd/modules/

我们采用创建新的conf文件来加载该so文件

#cat >/etc/httpd/conf.d/cndir.conf
LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_headers.c>
Header add MS-Author-Via “DAV”
</IfModule>
<IfModule mod_encoding.c>
 EncodingEngine    on
 NormalizeUsername on
 SetServerEncoding GBK
 DefaultClientEncoding UTF-8 GBK GB2312
 AddClientEncoding “(Microsoft .* DAV $)” UTF-8 GBK GB2312
 AddClientEncoding “Microsoft .* DAV” UTF-8 GBK GB2312
 AddClientEncoding “Microsoft-WebDAV*” UTF-8 GBK GB2312
</IfModule>
<CTRL+D>
当然SetServerEncoding UTF-8这样可以设置成你希望的默认编码,比如GBK,比如GB2312.
重启Apache。现在测试中文目录,看看效果。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics