标签:end 过滤器 https 网站 httpd 必须 mkdir 用处 yml
博文结构
Apache的Gzip(deflate)功能
Apache的缓存设置
Apache禁止目录遍历
Apache隐藏版本目录
Apache日志分割
Apache配置防盗链
关于apache源码包安装参考apache安装及工作模式
开启 apache 的 Gzip(deflate)功能 gzip 可以极大的加速网站,有时压缩比率高到 80%,最少都有 40%以上,还是相当不错的。 在 Apache2 之后的版本,模块名不叫 gzip,而叫 mod_deflate
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:表示需要执行编译操作。
[root@localhost ~]# yum -y install zlib-devel
[root@localhost /]# vim /usr/local/http-2.4.23/conf/httpd.conf
[root@localhost /]# apachectl -t
Syntax OK
[root@localhost /]# apachectl restart
接下来修改Apache主配置文件,使其开启gzip压缩传输功能
[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
[root@localhost /]# apachectl -t
Syntax OK
[root@localhost /]# apachectl restart
[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 压缩的原因了
这个是非常有用的优化,mod_expires 可以减少 20-30%左右的重复请求,让重复的用户对指定 的页面请求结果都 CACHE 在本地,根本不向服务器发出请求。但要注意更新快的文件不要 这么做。 这个模块控制服务器应答时的 Expires 头内容和 Cache-Control 头的 max-age 指令。有效期 (expiration date)可以设置为相对于源文件的最后修改时刻或者客户端的访问时刻
进入主配置里面搜索expires把前面#去掉
[root@localhost ~]# vim /usr/local/http-2.4.23/conf/httpd.conf
<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>
其中<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
报403没有权限访问
显示目录结构:把主配置文件里面刚删除的写回来
报200访问成功
[root@localhost /]# vim /usr/local/http-2.4.23/conf/httpd.conf
进入主配置文件把前面#号去掉
[root@localhost /]# vim /usr/local/http-2.4.23/conf/extra/httpd-default.conf
找到 ServerTokens Full ServerSignature On 改成 ServerTokens Prod ServerSignatureoff 重启 apache 测试
[root@localhost /]# apachectl restart
[root@localhost /]# curl -I 127.0.0.1
可以看到apache版本号被隐藏了
#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 #
标签:end 过滤器 https 网站 httpd 必须 mkdir 用处 yml
原文地址:https://blog.51cto.com/14400213/2460028