一、Apache网页优化:
- 在企业中,部署Apache后只采用默认的配置参数,会引起网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代。
- 为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容。
- 优化内容:
配置网页压缩功能。
配置网页缓存
工作模式的选择与参数优化
配置隐藏版本号
配置防盗链
。。。。
1、网页压缩:
- gzip介绍:
配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器。
作用:
降低了网络传输的字节数,加快网页加速的速度。
节省流量,改善用户的浏览体验
gzip与搜索引擎的抓取工具有着更好的关系 - Apache的压缩模块:
Apache实现网页压缩的功能模块包括:
1、mod_gzip 模块
2、mod_deflate 模块
Apache 1.x:没有内建网页压缩技术,但可使用第三方mod_gzip模块执行压缩。
Apache 2.x: 在开发的时候,内建了mod_deflate这个模块,取代mod_gzip - mod_gzip 模块与mod_deflate 模块比较:
两者均使用gzip压缩算法,运作原理类似。
mod_deflate 模块压缩速度略快,而mod_gzip的压缩比略高
mod_gzip 模块对服务器cpu的占用要高一些
高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快 - 启用网页压缩功能步骤:
1、查看是否安装mod_deflate模块
2、修改配置文件启用压缩功能
3、访问测试 - 检查是否已安装mod_deflate模块:
执行apache -t -D DUMP_MODULES命令
如果输出中没有deflate_module(static),说明编译时没有安装mod_deflate模块,说明编译时没有安装mod_deflate模块。 - 若没有安装,则要重新编译安装:
./configure --enable-deflate…
make && make install - 在配置httpd.conf中配置开启gzip功能:
- 重启Apache服务,在用火狐浏览器访问测试网站
- 在浏览器中选择,“查看元素”可以看到有“Accept-Encoding:gzip”表示压缩已经生效。
实验1 网页压缩:
[root@localhost ~]# cd /opt/ 将httpd、apr、apr-util放到opt下
[root@localhost ~]# tar jxvf httpd
[root@localhost ~]# tar zxvf apr
[root@localhost ~]# tar zxvf apr-util
[root@localhost ~]# mv apr-1.6.2 httpd/srclib/apr
[root@localhost ~]# mv apr-util httpd/srclib/apr-util
[root@localhost ~]# yum -y install \
>gcc \
>gcc-g++ \
>make \
>pcre-devel \
>expat-devel \
>perl
[root@localhost ~]# yum install zlib-devel -y
[root@localhost ~]# cd httpd/
[root@localhost ~]# ./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
[root@localhost ~]# make && make install
[root@localhost ~]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost ~]# vim /etc/httpd.conf
112 headers 开启
105 deflate 开启
101 filter开启
在末尾后添加:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascripts text/jpg text/png
DeflateCompressionLevel 9 ####压缩比
SetOutputFilter DEFLATE ####所有的都要压缩过滤
</IfModule>
[root@localhost ~]# /usr/local/httpd/bin/httpd -t >>>>Syntax OK
[root@localhost ~]# /usr/local/httpd/bin/httpd #####开启httpd的服务
[root@localhost ~]# netstat -ntap | grep httpd
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /usr/local/httpd/bin/ >>>ls 查看是否有apachectl
[root@localhost ~]# ./apache -t -D DUMP_MODULES | grep "deflate"
[root@localhost ~]# cd /usr/local/httpd/htdocs/ 加入一张图片
[root@localhost ~]# vim index.html
<img src="图片名字.jpg"/>
在win10上面安装抓包工具上面查看相关信息
2、网页缓存时间:
- 通过mod_expire模块配置Apache,使网页能够在客户端浏览器缓存一段时间,以避免重复请求。
- 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。
- 启用网页缓存功能的步骤:
查看是否安装mod_expire模块
修改配置文件启用缓存功能
访问测试 - 查看是否安装了mod_expire模块
/usr/local/apache/bin/apachectl -t -DUMP_MODULES
如果输出中没有expire_modules(static),则说明编译时没有安装mod_expires - 如果没有安装,需要重新编译安装
./configure —enable-expires…
make && make install - 重启Apache服务,再用火狐浏览器访问测试网站
- 在浏览器中选择“查看元素”可以看到“Expires”项表示缓存生效。
实验2 网页缓存:
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /opt/ 将httpd、apr、apr-util放到opt下
[root@localhost ~]# tar jxvf httpd
[root@localhost ~]# tar zxvf apr
[root@localhost ~]# tar zxvf apr-util
[root@localhost ~]# mv apr-1.6.2 httpd/srclib/apr
[root@localhost ~]# mv apr-util httpd/srclib/apr-util
[root@localhost ~]# yum -y install \
>gcc \
>gcc-g++ \
>make \
>pcre-devel \
>expat-devel \
>perl
[root@localhost ~]# yum install zlib-devel -y
[root@localhost ~]# cd http/
[root@localhost ~]# ./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-expires \ ****
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
[root@localhost ~]# make && make install
[root@localhost ~]#vim /usr/local/httpd/conf/httpd.conf
111expires开启
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 50 seconds"
</IfModule>
[root@localhost ~]# cd /usr/local/httpd/bin/
[root@localhost ~]# ./apachectl -t 检查语法是否正确
[root@localhost ~]# ./apachectl
[root@localhost ~]# netstat -ntap | grep httpd
[root@localhost ~]# ./apachectl -t -D DUMP_MODULES | grep "expires"
[root@localhost ~]# cd /usr/local/httpd/htdocs/ 加入一张图片
[root@localhost ~]# vim index.html
<img src="图片名字.jpg"/>
在win10上面安装抓包工具上面查看相关信息
二、Apache安全优化:
1、配置防盗链:
- 防盗链是防止别人的网站代码里面盗用我们自己服务器上面的图片、文件、视频等相关资源。
- 如果别人盗用网站的这些静态资源,明显的是会增加服务器的带宽压力。
- 作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。
IP地址 | 域名 | 用途 |
---|---|---|
192.168.100.100 | www.kgc.com | 源主机 |
192.168.100.200 | www.benet.com | 盗链网站 |
客户端 | win10 | 火狐浏览器 |
- 盗链模拟步骤:
1、两台主机配置测试页面
2、盗链网站的测试网页,盗用源主机网站目录下的一个logo.jpg文件。
3、在Windows中访问验证。 - 查看是否安装了mod_expire模块
/usr/local/apache/bin/apachectl -t -DUMP_MODULES
如果输出中没有expire_modules(static),则说明编译时没有安装mod_expires - 如果没有安装,需要重新编译安装
./configure —enable-expires…
make && make install - 配置规则变量说明:
%{HTTP_REFERER}:浏览header中的链接字段,存放一个链接的URL,代表是从哪个链接访问所需的网页。
!^:不以后面的字符串开头
.*$:以任意字符结尾
NC:不区分大写
R:强制跳转 - 规则匹配说明:
RewriteEngine On:打开网页重写功能
RewriteCond:设置匹配规则
RewriteRule:设置跳转动作 - 规则匹配:
如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配。 - 修改配置文件启用防盗链功能并设置规则:
实验1 网页防盗链:
官方网站:
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce
[root@localhost ~]# yum -y install bind
[root@localhost ~]# vim /etc/named.conf 修改any
[root@localhost ~]# vim /etc/named.rfc1912.zones 修改kgc.com kgc.com.zone
[root@localhost ~]# cd /var/named
[root@localhost ~]# cp -p named.localhost kgc.com.zone
[root@localhost ~]# vim kgc.com.zone 添加www IN A 192.168.100.100
[root@localhost ~]# systemctl start named 测试机要保证在同一网段,且DNS解析地址修改是刚才配置机的ip地址
[root@localhost ~]# cd /opt/ 将httpd、apr、apr-util放进来
[root@localhost ~]# tar jxvf httpd
[root@localhost ~]# tar zxvf apr
[root@localhost ~]# tar zxvf apr-util
[root@localhost ~]# mv apr/ httpd/srclib/apr
[root@localhost ~]# mv apr-util/ httpd/srclib/apr-util
[root@localhost ~]# cd httpd/
[root@localhost ~]# yum install gcc gcc-c++ pcre pcre-devel perl expat-devel zlib-devel -y
[root@localhost ~]# ./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
[root@localhost ~]# make && make install
[root@localhost ~]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost ~]# vim /etc/httpd.conf /rewrite 是否存在???
[root@localhost ~]# cd /usr/local/httpd/
[root@localhost ~]# cd htdocs/ 加入两张图片
[root@localhost ~]# vim index.html 编辑 <img src="game.jpg"/>
[root@localhost ~]# vim ../conf/httpd.conf Listen 192.168.100.100:80 ServerName kgc
[root@localhost ~]# cd ..
[root@localhost ~]# cd bin/
[root@localhost ~]# ./apachectl stop 只要保证在bin下面启动
[root@localhost ~]# ./apachedtl start 在测试机上输入“www.kgc.com”测试!!!
在盗链网站上:
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 修改Listen 192.168.100.100:80 ServerName
[root@localhost ~]# cd /var/www/html
[root@localhost ~]# vim index.html 编辑 " <h1> this is test web </h1>
<img src="httpd://www.kgc.com/图片名.jpg"/>"
[root@localhost ~]# echo "nameserver 192.168.100.100" > /etc/resolv.conf
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -ntap | grep httpd 查看httpd是否生成??
设置防盗链:
[root@localhost ~]# cd /usr/local/httpd/conf 在官方网站上设置!!
[root@localhost ~]# vim httpd.conf 开启rewrite模块
<Directory> 先查找到目标地址上添加
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://kgc.com/ .*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/图片名称.png 注意!!!要是png格式的图片!!!
</Directory>
[root@localhost ~]# cd ..
[root@localhost ~]# cd bin/
[root@localhost ~]# ./apachectl stop
[root@localhost ~]# ./apachedtl start 开启网站服务!!
在测试机上测试
2、配置Apache隐藏版本信息:
Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患。
生产环境中要配置Apache隐藏版本信息。
- 配置Apache隐藏版本信息:
将主配置文件httpd.conf以下行注释去掉
#Include conf/extra/httpd-default.conf
修改http-default.conf文件
ServerToken Full修改为Server Token Prod - 重启httpd服务,访问验证。
接上面的实验:
设置隐藏版本号:
[root@localhost ~]# cd /usr/local/httpd/conf
[root@localhost ~]# vim httpd.conf 查找“Include ...default.conf”
[root@localhost ~]# cd /usr/local/httpd/conf/extra 有一个httpd-default.conf
[root@localhost ~]# vim httpd-default.conf 查找“Tokens”的FULL 》》》》Prod
[root@localhost ~]# cd bin 到bin目录下面
[root@localhost ~]# ./apachectl stop
[root@localhost ~]# ./apachectl start
在测试机上查看