一、网页压缩
编译 Apache添加mod_deflate模块
[root@apache ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src
[root@apache ~]# cd /usr/src/httpd-2.4.25/
[root@apachehttpd-2.4.25]#./configure--prefix=/usr/local/httpd--enable-so--enable-rewrite--enable-charset-l
ite--enable-cgi--enable-deflate
[root@apache httpd-2.4.25]#make
[root@apache httpd-2.4.25]#make install
[root@apache httpd-2.4.25]#ln -s /usr/local/httpd/bin/* /usr/local/bin
在 httpd.conf 文件,开启 LoadModule deflate_module modules/mod_deflate.so 配置项,在文本末尾添加一下参数。
[root@apache~]# vim /usr/local/httpd/conf/httpd.conf
LoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/csstext/javascript
application/x-javascript application/javascriptapplication/json
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
#设置不对后缀 gif,jpg,jpeg,png 的图片文件进行压缩
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
#设置不对 exe,tgz,gz 等文件进行压缩
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
AddOutputFilterByType DEFLATE text/*
#设置对文件是文本的内容进行压缩
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
#设置 apache 对 php 类型的文件进行压缩
</IfModule>
检测 httpd.conf 语法,然后重新启动 Apache 服务器,并检查 mod_deflate 模块安装情况。
[root@apache~]# apachectl -t
Syntax OK
[root@apache~]# apachectl restart
[root@apache ~]# apachectl -t -D DUMP_MODULES | grep "deflate"
deflate_module (shared)
二、网页缓存
在 httpd.conf 去 掉 LoadModule expires_module modules/mod_expires.so 前面的#注释,末尾加入以下内容。
[root@apache ~]# vim /usr/local/httpd/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfMoule>
[root@apache ~]# apachectl -t //检测 httod.conf 语法
Syntax OK
三、隐藏版本信息
修改 httpd.conf 配置文件,使 httpd-default.conf 文件生效,它里面包含了是否返回版本信息的内容。
[root@apache ~]# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-default.conf //去掉前面的#
然后,修改 httpd-default.conf 文件。
[root@apache ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
ServerTokens Prod //将原本的Full 改为 Prod
重新启动 Apache 服务,使用火狐浏览器访问 Apache 服务器的 URL 地址,在浏览器中选择“查看元素”可以查看到 Apache 的版本号已隐藏
三、防盗链
Apache 防盗链需要安装 mod_rewrite 模块,安装步骤如下。
配置 mod_rewrite 模块启用,mod_rewrite 模块需要在 httpd.conf 文件启用才能生效
[root@apache conf]# vim httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so //去掉#注释
<Directory "/usr/local/httpd/htdocs">
AllowOverride ALL //改为 ALL
RewriteEngine On //加入 mode_rewrite 模块内容
RewriteCond %{HTTP_REFERER} !^http://aaa.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://aaa.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.aaa.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.aaa.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.aaa.com/error.png
</Directory>
- mod_rewrite 模块主要的功能就是实现 URL 的跳转,它的正则表达式是基于 Perl语言,可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。
- 基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf 的全局下直接利用RewriteEngine on 来打开 rewrite 功能;另一种是在局部里利用 RewriteEngine on 来打开rewrite 功能。
- 基于目录级的(.htaccess),要注意一点就是必须打开此目录的 FollowSymLinks 属性且在.htaccess 里要声明 RewriteEngine on。
- 开启 rewrite 功能后,需要设置 RewriteCond 指令,它定义了匹配规则。如果符合某个或某几个条件,则执行 RewriteCond 下面紧邻的 RewriteRule 指令。如果不匹配,则后面的规则不再匹配,RewriteRule 则定义需要重定向到的路径。
规则 | 描述 |
---|---|
%{HTTP_REFERER} | 浏览 header 中的链接字段,存放一个链接的 URL,代表是从哪个链接访问所需的网页 |
!^ | 不以后面的字符串开头 |
.*$ | 以任意字符结尾 |
NC | 不区分大小写 |
R | 强制跳转 |
? | 匹配 0 到 1 个字符 |
* | 匹配 0 到多个字符 |
+ | 匹配 1 到多个字符 |
^ | 字符串开始标志 |
$ | 字符串结束标志 |
. | 匹配任何单字符 |
- RewriteEngine On 打开了重写引擎
- “ %{HTTP_REFERER}” : 表示从哪个 URL 来产生请求。
- “!^ ” : 表示不是以后面的字符串开头。
- “http://www.kxr.com ” ,是本网站的路径,按整个字符串匹配。
- “.*$ ” 表示以任意字符结尾。
- “NC ”表示不区分大小写字母。
最后的规则是不以“http://www.aaa.com ”为路径,即不是本网站进行访问,后面是任意字符都可以匹配成功,其它几项可对照规则表分析。
如果请求路径被匹配,执行重定
“RewriteRule .*.(gif|jpg|swf)$ http://www.aaa.com/error.png” 。
- “. ”表示匹配一个字符。
- “ * ”表示匹配 0 到多个字符,与“ . ”合起来的意思是匹配 1 到多个字符,实际上可以只用“+“表示,这里是为了演示使用方式。
- “.”在这里表示的是转义字符“.”,因为“. ”在指令中是属于规则字符,有相应的含义, 如果需要匹配,需要在前面加个“\”,其它规则字符如果需要匹配,也做同样处理。
- “(gif|jpg|swf)”表示匹配“gif”、“jpg”、“swf”任意一个,“$”表示结束。最后的规则是以“.gif”、“.jpg”、“.swf”结尾,前面是 1 到多个字符的字符串,也就是匹配图片类型的文件。
- “http://www.aaa.com/error.png”:表示转发到这个路径。
重启服务器,并且清除浏览器的缓存,避免从本地读取缓存内容,复制 error.png 这个图片到工作目录 /usr/local/httpd/htdocs,然后访问网站