apache2的mod_deflate安装使用手记

apache2的mod_deflate安装使用手记

创建 mod_deflate.so 文件。

先看一下,apache 的 modules 目录下有没有 mod_deflate.so 文件。

用 ls /usr/local/apache2/modules/ 看一下,如果没有,可以执行下面的命令创建。

/usr/local/apache2/bin/apxs -i -c /home/lsc/httpd-2.0.63/modules/filters/mod_deflate.c

说明:/usr/local/apache2/ 是apache安装后的目录;/home/lsc/httpd-2.0.63/ 是 apache 的原代码目录。

可以看到,该命令最后输出下面几行:


See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/local/apache2/modules/mod_deflate.so

这说明 mod_deflate.so 文件已经生成了,存放在 /usr/local/apache2/modules/ 目录下。

三:更改 apache 的 http.conf 文件。

vi /usr/local/apache2/conf/http.conf ,加上下面的内容。

无高亮复制打印?
LoadModule deflate_module modules/mod_deflate.so  
<ifmodule mod_deflate.c>  
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/x-javascript text/css  
</ifmodule>  
LoadModule deflate_module modules/mod_deflate.so
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/x-javascript text/css
</ifmodule>

好了,重新启动一下 apache.

/usr/local/apache2/bin/apachectl restart


注意:不同浏览器对压缩的支持程度不一样,要更好的设计,可以参考文档
http://man.chinaunix.net/newsoft/Apache2.2_chinese_manual/mod/mod_deflate.html


不能添加的原因是下面的模组没有打开:

LoadModule headers_module modules/mod_headers.so

Apache deflate模块配置说明
前几天一直在找apache2.0以dso方式编译后加载deflate模块的办法
试了apxs -ica mod_deflate.c N次,始终是报

Cannot load /opt/apache/modules/mod_deflate.so into server: /opt/apache/modules/mod_deflate.so: undefined symbol: deflate
异常的痛苦,什么ldd mod_deflate.so后再export LIB_LIBRARY_PATH呀,都试了N次,google也go了N天。终于在google上go出来一篇文章,终于解决,方法如下:

vi /usr/local/apache2/bin/apr-config
修改LDFLAGS=" " 为 LDFLAGS="-lz"
然后再apxs -ica mod_deflate.c
就OK了
另外在配置deflate规则时
apache2.0推荐加上这句

Header append Vary User-Agent env=!dont-vary
以便确保不会输出在压缩过程中出现内容方面的error
但一般情况下,在测试apache的语法过程中会现出
Invalid command ‘Header’, perhaps mis-spelled or defined by a module not included in the server configuration
解决办法就是加载一个headers模块就OK了

不过最好还是在编译apache模块时直接加上–enable-deflate –enable-headers就省事多了。

配置 Apache 实现禁止图片盗链



1、假设充许连结图片的主机域名为:www.demo.com.cn
2、修改httpd.conf
SetEnvIfNoCase Referer "^http://www.demo.com.cn/" local_ref=1
<FilesMatch ".(gif|jpg)">
    order Allow,Deny
    Allow from env=local_ref
</FilesMatch>
这个简单的应用不光可以解决图片盗链的问题,稍加修改还可以防止任意文件盗链下载的问题。

使用以上的方法当从非指定的主机连结图片时,图片将无法显示,如果希望显示一张“禁止盗链”的图片,我们可以用mod_rewrite 来实现。

首先在安装 apache 时要加上 –enable-rewrite 参数加载 mod_rewrite 模组。

假设“禁止盗链”的图片为abc.gif,我们在 httpd.conf 中可以这样配置:

RewriteEngine on
RewriteCond %{ HTTP_REFERER } !^$
RewriteCond %{ HTTP_REFERER } !^http://(www\.)?demo.com.cn /.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.demo.com.cn/abc.gif [R,L]
当主机的图片被盗链时,只会看到 abc.gif 这张“禁止盗链”的图片!





[本日志由 hotfish 于 2009-10-20 09:12 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 136
发表评论
你没有权限发表评论!