一、Apache网页优化
1.1 网页压缩
1.1.1 网页优化内容
■配置网页压缩功能
■配置网页缓存
■工作模式的选择与参数优化
■配置隐藏版本号
■配置防盗链
1.1.2 gzip介绍
■配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器
■作用
●降低了网络传输的字节数,加快网页加载的速度
●节省流量,改善用户的浏览体验
●gzip与搜索引擎的抓取工具有着更好的关系
■Apache实现网页压缩的功能模块包括
●mod_gzip 模块
●mod_deflate 模块
■Apache 1.x
●没有内建网页压缩技术,但可使用第三方mod_gzip 模块执行压缩
■Apache 2.x
●在开发的时候,内建了mod_deflate 这个模块,取代mod_gzip
■Modgil 模块与mod_deflate 模块
●两者均使用gzip压缩算法,运作原理类似
●mod_deflate 压缩速度略快,而mod_gzip 的压缩比略高
●mod_gzip 对服务器CPU的占用要高一些
●高流量的服务器,使用mod_deflate 可能会比mod_gzip 加载速度更快
1.1.3 启用网页压缩功能
■步骤
●检查是否安装了mod_deflate模块(注:前期虚拟机已经安装了Apache服务)
[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "deflate"
##如果输出中没有deflate_module (static),说明编译时没有安装mod_deflate模块##
[root@localhost ~]# systemctl stop httpd
##需要停止Apache服务,重新编译安装Apache,参数中加入mod_deflate模块##
[root@localhost ~]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi \
> --enable-cgid \
> --enable-deflate
[root@localhost httpd-2.4.29]# yum install -y zlib-devel ##若提示失败,则安装这个,再次执行安装即可##
[root@localhost httpd-2.4.29]# make -j3 ##-j3是核心数,最大不要超过虚拟机的核心数##
[root@localhost httpd-2.4.29]# make install
●在配置httpd.conf中配置mod_deflate模块启用
[root@localhost httpd-2.4.29]# vi /usr/local/httpd/conf/httpd.conf
. . . . . . . . . . . ##此处省略部分内容##
##在末尾添加以下内容##
LoadModule deflate_module modules/mod_deflate.so ##启用mod_deflate模块##
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript image/png image/jpg ##代表用什么样的内容进行gzip压缩##
DeflateCompressionLevel 9 ##代表压缩级别##
SetOutputFilter DEFLATE ##代表启用deflate模块对本站点的输出进行gzip压缩##
</IfModule>
[root@localhost httpd-2.4.29]# httpd -t ##检查语法是否错误##
Syntax OK ##输出这个代表无错##
[root@localhost httpd-2.4.29]# systemctl restart httpd
##配置完成后需要重启Apache生效,然后抓包查看##
##将照片b传入/usr/local/httpd/htdocs目录下##
●也可以通过将照片b传入/usr/local/httpd/htdocs目录下
●配置测试页
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# vi index.html
<html>
<head>
<title>--压缩测试页--</title>
</head>
<body><h1>这是一个测试网页内容压缩的界面!!</h1>
<img src=b.jpg / >
</body>
</html> ##测试页内容##
##中文乱码问题解决方法##
[root@localhost htdocs]# vi /usr/local/httpd/conf/httpd.conf
AddDefaultCharset utf-8 ##在ServerName下面添加##
[root@localhost htdocs]# systemctl restart httpd
##修改完成后重启##
■在浏览器中输入网址测试,成功显示,下面抓包看下图片有没有压缩
1.2 网页缓存
●检查mod_expire是否安装
[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "expire"
##如果输出中没有输出结果,说明编译时没有安装mod_expire模块##
●安装mod_expire模块
[root@localhost ~]# systemctl stop httpd
[root@localhost ~]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi \
> --enable-cgid \
> --enable-deflate \
> --enable-expires
[root@localhost httpd-2.4.29]# yum install -y zlib-devel ##若提示失败,则安装这个,再次执行安装即可##
[root@localhost httpd-2.4.29]# make -j3 ##-j3是核心数,最大不要超过虚拟机的核心数##
[root@localhost httpd-2.4.29]# make install
[root@localhost httpd-2.4.29]# vi /usr/local/httpd/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so ##找到这个将"#"注释##
. . . . . . . . ##此处省略部分内容##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfModule> ##在最后一行添加##
[root@localhost httpd-2.4.29]# httpd -t
Syntax OK
[root@localhost httpd-2.4.29]# systemctl restart httpd
[root@localhost httpd-2.4.29]# apachectl -t -D DUMP_MODULES | grep "expire" ##检测模块是否安装##
expires_module (shared) ##已安装##
●抓包测试
二、 Apache安全优化
2.1 隐藏版本信息
■Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
■生产环境中要配置Apache隐藏版本信息
●配置Apache隐藏版本信息
[root@localhost httpd-2.4.29]# vi /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-default.conf ##将“#”去掉##
[root@localhost httpd-2.4.29]# vi /usr/local/httpd/conf/extra/httpd-default.conf
ServerTokens Prod ##找到这个。把full改成Prod##
[root@localhost httpd-2.4.29]# systemctl restart httpd
●访问测试,抓包分析
2.2 配置防盗链
■防盗链就是防止别人的网站代码里面盗用服务器的图片、文件、视频等相关资源
■如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
■所以作为网站的维护人员,要杜绝我们服务器的静态资源被其他网站盗用
■使用两台主机模拟盗链
●两台主机配置与功能如下:
20.0.0.10 www.51xit.top 源主机
20.0.0.11 www.52xit.top 盗链网站
■盗链模拟步骤
●在20.0.0.11中,作为盗链网站,需要用到www.51xit.top/b.jpg这个图片,也需要搭建网页压缩功能
[root@localhost ~]# vi /etc/hosts
20.0.0.10 www.51xit.top ##添加映射关系##
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# vi index.html
<html>
<head>
<title>--压缩测试页--</title>
</head>
<body><h1>这是一个测试网页内容压缩的界面!!</h1>
<img src=http://www.51xit.top/b.jpg / > ##若想使用windows的浏览器访问,需要在windows的hosts中添加映射关系##
</body>
</html> ##清空默认文件后添加这个##
[root@localhost htdocs]# vi /usr/local/httpd/conf/httpd.conf
AddDefaultCharset utf-8 ##在ServerName下面添加##
[root@localhost ~]# systemctl restart httpd
##在20.0.0.11浏览器中输入20.0.0.11,能正常访问图片并显示出来##
■接下来做Apache 防盗链配置
●Apache 防盗链需要安装 mod_rewrite模块,检查是否安装了 mod_rewrite 模块
[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "rewrite"
##无显示表示没有安装##
[root@localhost ~]# systemctl stop httpd
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so #找到这个,#去掉##
[root@localhost ~]# apachectl -t -D DUMP_MODULES | grep "rewrite"
rewrite_module (shared) ##已经开启##
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
##在htdocs下添加##
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://20.0.0.10/*
RewriteCond %{HTTP_REFERER} !^http://51xit.top/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://51xit.top$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.51xit.top/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.51xit.top$ [NC]
RewriteRule .*\.(gif|jpg|swf|png)$ https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3102240988,35639029&fm=26&gp=0.jpg [R,NC]
##此链接为图片链接地址##
[root@localhost ~]# systemctl restart httpd
[root@localhost htdocs]# vi index.html
<html>
<head>
<title>--压缩测试页--</title>
</head>
<body><h1>这是一个盗用的图!!</h1>
<img src=http://www.51xit.top/b.jpg / >
</body>
</html>
■进入真机的浏览器,输入20.0.0.11测试