解决 apache error 指定网络名不再可用 "an unknown filter was not added: DEFLATE"的问题

今天突然发现网站访问不了了,到服务器上看apache还是启动状态,重启后就可以正常访问了。
查看apache的错误日志发现有很多下面的错误信息:
指定网络名不再可用
[error] an unknown filter was not added: DEFLATE

这个错误是由于虚拟主机配置文件中使用了DEFLATE,但apache却没有使用mod_deflate模块导致的。

比如虚拟主机的配置中有:

        <Location />
            AddOutputFilterByType DEFLATE text/html text/xml text/plain
        </Location>


ok,找到原因后,就好解决了,让apache加载mod_deflate模块即可。

Apache2 推荐使用 mod_deflate 压缩,mod_gzip 适合apache1.x。

1. 查找模块 deflate
find /home/test/httpd-2.0.50 -name mod_deflate.c

2. 安装 mod_deflate
cd /home/test/httpd-2.0.50/modules/filters
/usr/local/apache2/bin/apxs  -i -c -a /home/test/httpd-2.0.50/modules/filters/mod_deflate.c   

apxs命令参数说明:
-i  此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。
-a  此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-c  此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码文件(.o和.a),    以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so 。
 
如果是新安装apache,直接加上  --enable-headers  --enable-deflate 即可.    

 

posted @   大自然的流风  阅读(2382)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示