其他分享
首页 > 其他分享> > Apache深度优化

Apache深度优化

作者:互联网

博文结构
Apache的Gzip(deflate)功能
Apache的缓存设置
Apache禁止目录遍历
Apache隐藏版本目录
Apache日志分割
Apache配置防盗链

关于apache源码包安装参考apache安装及工作模式

一.apache的Gzip(deflate)功能

开启 apache 的 Gzip(deflate)功能 gzip 可以极大的加速网站,有时压缩比率高到 80%,最少都有 40%以上,还是相当不错的。 在 Apache2 之后的版本,模块名不叫 gzip,而叫 mod_deflate

Apache深度优化

Apache深度优化

LoadModule deflate_module modules/mod_deflate.so
//模块的作用:对传输到客户端的代码进行gzip压缩
LoadModule headers_module modules/mod_headers.so 
/模块的作用:告诉客户端的浏览器,传输的文件使用了gzip压缩。如果不开启的话,则无法正常显示网页内容
[root@localhost ~]# cd /usr/src/httpd-2.4.23/modules/filters/
//切换到Apache源码包mod_deflate所在的目录下
[root@localhost filters]#  /usr/local/http-2.4.23/bin/apxs -c -i -a mod_deflate.c
//使用apxs命令进行安装
-i:表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中;
-a:表示会自动增加一个 LoadModule 行到 httpd.conf 文件中,以启用此模块,或者,如果 此行已经存在,则启用之;
-c:表示需要执行编译操作。

Apache深度优化

[root@localhost ~]# yum -y install zlib-devel

[root@localhost /]# vim /usr/local/http-2.4.23/conf/httpd.conf
Apache深度优化
[root@localhost /]# apachectl -t
Syntax OK
[root@localhost /]# apachectl restart

[root@localhost /]# vim /usr/local/http-2.4.23/conf/httpd.conf 

<IfModule mod_deflate.c>
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/*
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>

DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog logs/deflate_log.log deflate

解释:

<IfModule mod_deflate.c>
DeflateCompressionLevel 9    
\\压缩程度的等级,预设可以采用 6 这个数值,以维持 耗用处理器效能与网页压缩质量的平衡

SetOutputFilter DEFLATE
\\设置输出过滤器,对输出启用压缩,必须的,就像一个 开关一样,告诉 apache 对传输到浏览器的内容进行压缩 

AddOutputFilterByType DEFLATE text/*
\\设置对文件是文本的内容进行压缩,例如 text/html  text/css  text/plain 等. 

SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
\\设置不对后缀 gif,jpg,jpeg,png 的图片文件进行压缩。注:?:表示不会捕获 ( )里内容了 
</IfModule>

DeflateFilterNote Input input_info
\\声明输入流的 byte 数量 
DeflateFilterNote Output output_info
\\声明输出流的 byte 数量 
DeflateFilterNote Ratio ratio_info
\\声明压缩的百分比 
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
\\声明日志格式 
CustomLog logs/deflate_log.log deflate
//指定日志的存放路径

[root@localhost /]# vim /usr/local/http-2.4.23/htdocs/index.html
Apache深度优化

[root@localhost /]# apachectl -t
Syntax OK
[root@localhost /]# apachectl restart

Apache深度优化

[root@localhost ~]# cat /usr/local/http-2.4.23/logs/deflate_log.log
"GET / HTTP/1.1" 77/5265 (1%)
"GET /favicon.ico HTTP/1.1" -/- (-%)
"GET / HTTP/1.1" 77/5265 (1%)
"GET / HTTP/1.1" 77/5265 (1%)
[root@localhost ~]# 

注:图片是不需要启用 GZip 压缩的,从 GZip 检测结果来看,压缩后的图片体积竟然大过原 体积!这就解释了为什么图片不用启用 GZip 压缩的原因了

apache的缓存配置

这个是非常有用的优化,mod_expires 可以减少 20-30%左右的重复请求,让重复的用户对指定 的页面请求结果都 CACHE 在本地,根本不向服务器发出请求。但要注意更新快的文件不要 这么做。 这个模块控制服务器应答时的 Expires 头内容和 Cache-Control 头的 max-age 指令。有效期 (expiration date)可以设置为相对于源文件的最后修改时刻或者客户端的访问时刻

Apache深度优化

进入主配置里面搜索expires把前面#去掉

[root@localhost ~]# vim /usr/local/http-2.4.23/conf/httpd.conf

Apache深度优化

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html "access plus 2 minute"
ExpiresByType image/jpeg "access plus 1 mouth"
ExpiresDefault "now plus 0 minute"
</IfModule>

注释:

<IfModule mod_expires.c>             
//表示启用expires模块
ExpiresActive On                            
//启用expires功能
ExpiresByType text/html "access plus 2 minute"         
//设置后缀为html的文本文件保存时间为两分钟
ExpiresByType image/jpeg "access plus 1 mouth"        
//设置后缀为jpeg的图片信息保存时间为一个月
ExpiresDefault "now plus 0 minute"
//其他默认没有被定义的不进行缓存
</IfModule>

Apache深度优化

其中<base>是下列之一: 
• access 
• now (等价于'access ')
• modification 
plus 关键字是可选的。<num>必须是整数,<type>是下列之一: 
• years
• months
• weeks 
• days 
• hours 
• minutes 
• seconds
[root@localhost ~]# cd /usr/local/http-2.4.23/htdocs/
[root@localhost htdocs]# mv index.html /index.html.bak
[root@localhost htdocs]# mkdir aaa
[root@localhost htdocs]# mkdir 123
[root@localhost htdocs]# vim /usr/local/http-2.4.23/conf/httpd.conf 
[root@localhost htdocs]# apachectl restar

[root@localhost ~]# vim /usr/local/http-2.4.23/conf/httpd.conf 
[root@localhost ~]# apachectl restart

Apache深度优化

Apache深度优化

报403没有权限访问

显示目录结构:把主配置文件里面刚删除的写回来

Apache深度优化

报200访问成功

apache隐藏版本

Apache深度优化

[root@localhost /]# vim /usr/local/http-2.4.23/conf/httpd.conf
进入主配置文件把前面#号去掉

Apache深度优化

[root@localhost /]# vim /usr/local/http-2.4.23/conf/extra/httpd-default.conf

找到 ServerTokens Full ServerSignature On 改成 ServerTokens Prod ServerSignatureoff 重启 apache 测试

Apache深度优化

[root@localhost /]# apachectl restart
[root@localhost /]# curl -I 127.0.0.1

#define AP_SERVER_BASEVENDOR "Apache Software Foundation" #服务的供应商名称 
#define AP_SERVER_BASEPROJECT "Apache HTTP Server"  #服务的项目名称 
#define AP_SERVER_BASEPRODUCT "Apache"        
#服务的产品名
#define AP_SERVER_MAJORVERSION_NUMBER 2  #主要版本号
#define AP_SERVER_MINORVERSION_NUMBER 4  #小版本号 
#define AP_SERVER_PATCHLEVEL_NUMBER 23  #补丁级别
#define AP_SERVER_DEVBUILD_BOOLEAN  0  # 

标签:优化,deflate,usr,conf,深度,Apache,root,localhost
来源: https://blog.51cto.com/14400213/2460028