文章目录
Apache网页优化
在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代
为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容
gzip介绍
配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器,其作用
- 降低了网络传输的字节数,加快网页加载的速度
- 节省流量,改善用户的浏览体验
Apache的压缩模块
Apache实现网页压缩的功能模块包括
- mod_gzip 模块
- 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 加载速度更快
配置网页压缩功能
-
启动网页压缩功能步骤
查看是否安装mod_deflate模块→修改配置文件启用压缩功能→访问测试
-
检查是否已安装mod_deflate模块
执行apachectl -t -D DUMP_ MODULES命令
如果输出中没有deflate_ module (static), 说明编译时没有安装mod_deflate模块
-
若没有安装,则要重新编译安装
./configure --enable-deflate
make && make install
-
在配置httpd.conf中配置开启gzip功能
-
重启Apache服务,再用浏览器访问测试网站
-
在浏览器中选择“查看元素”可以看到有"Accept-Encoding:gzip"表示压缩已经生效
网页压缩功能实验步骤
相关软件包
手工编译安装Apache服务
[root@localhost httpd]# tar zxvf apr-1.6.2.tar.gz
[root@localhost httpd]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost httpd]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost httpd]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost httpd]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost opt]# yum -y install \
gcc \ #编译器
gcc-c++ \ #编译器
make \ #make工具
pcre-devel \ #支持正则表达式的工具
expat-devel \ #使网站能解析标签语言的工具
perl #Perl语言工具
zlib-devel
[root@localhost opt]# cd 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-deflate #开启deflate压缩模块
[root@localhost httpd-2.4.29]# make && make install
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
#创建软连接方便管理
编辑配置文件
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
Listen 192.168.110.10:80
#Listen 80
ServerName www.aaa.com:80
...
LoadModule headers_module modules/mod_headers.so #这三条全部开启
LoadModule deflate_module modules/mod_deflate.so
LoadModule filter_module modules/mod_filter.so
...
<IfModule mod_deflate.c> #在末尾加入
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascrip text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/httpd -t
#使用apachectl工具检查是否配置正确
Syntax OK
启动服务
[root@localhost httpd-2.4.29]# setenforce 0
[root@localhost httpd-2.4.29]# iptables -F
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/httpd #开启服务
[root@localhost httpd-2.4.29]# netstat -natp | grep 80
tcp 0 0 192.168.110.10:80 0.0.0.0:* LISTEN 44071/httpd
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES |grep "deflate" #查看模块
deflate_module (shared)
验证网页压缩功能
[root@localhost htdocs]# ls #添加一张名为b的图片
index.html b.jpg
[root@localhost htdocs]# vim index.html
<html><body><h1>It works!</h1>
<img src="b.jpg"/>
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start
在Windows10中安装fiddler软件
使用fiddler工具抓包
支持压缩
网页缓存时间
通过mod_ expire模块配置Apache, 使网页能在客户端浏览器缓存一段时间,以避免重复请求
启用mod_ expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
- 启用网页缓存功能步骤
查看是否安装mod_expire→修改配置文件启用缓存功能→访问测试 - .查看是否安装mod_expire模块
/usr/local/apache/bin/apachectl -t -D DUMP_MODULES
如果输出中没有expires_module (static),则说明编译时没有安装mod_expires - 如果没有安装,需要重新编译安装
./configure - -enable-expires
make && make install - 修改httpd.conf配置文件
启用mod_expires模块,并设置http协议下任意格式的文档均60秒后过期
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfModule>
- .重启Apache服务,再用浏览器访问测试网站
- 在浏览器中选择“查看元素”可以看到有”Expires“项表示缓存生效
实验步骤
配置Apache服务增加缓存功能
[root@localhost httpd-2.4.29]# ./configure \
--enable-expires
编辑配置文件
[root@localhost opt]# vim /etc/httpd.conf
LoadModule expires_module modules/mod_expires.so #开启模块
...
<IfModule mod_expires.c> #配置文件末尾添加
ExpiresActive On
ExpiresDefault "access plus 50 seconds" #设置缓存时间50秒
</IfModule>
进行测试
[root@localhost opt]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl -t #测试配置文件是否正确
Syntax OK
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "expires" 查看模块
expires_module (shared)
[root@localhost bin]# ./apachectl restart #重启Apache服务
Apache安全优化
防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源
如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用
配置Apache实现防盗链
-
检查Apache是否安装了mod_rewrite模块
/usr/local/apache/bin/apachectl -t -D DUMP_MODULES
-
如果输出中没有rewrite_module(static),则说明编译时没有安装mod_rewrite模块
-
若没有安装则需要重新编译安装
/configure --enable-rewrite
make && make install
实验步骤
配置DNS服务
[root@localhost ~]# yum -y install bind
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { any;};
...省略内容
allow-query { any; };
[root@localhost ~]# vim/etc/named.rfc1912.zones
zone "aaa.com" IN {
type master;
file "aaa.zone";
allow-update { none; };
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost aaa.com.zone
[root@localhost named]# vim aaa.com.zone
www IN A 192.168.110.10
[root@localhost named]#vim /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
<img src="b.jpg">
[root@localhost named]# iptables -F
[root@localhost named]# setenforce 0
[root@localhost named]# systemctl start named
盗链网站配置httpd服务
[root@csdn ~]# iptables -F
[root@csdn ~]# setenforce 0
[root@csdn ~]# yum install httpd -y
[root@csdn ~]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.110.15:80
#Listen80
ServerName www.bbb.com: 80
[root@csdn ~]# cd /var/www/html/
[root@csdn html]# vim index.html
<h1>bbb</h1>
<img src="http://www.aaa.com/b.jpg"/> #指向源服务器的图片
[root@csdn html]# systemctl start httpd.service
开启防盗链服务
开启防盗链服务
[root@localhost bin]# vim /etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so #去掉注释
<Directory "/usr/local/httpd/htdocs">
.....省略内容
RewriteEngine On #添加此6行内容
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/q.jpg
</Directory>
[root@localhost bin]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
b.png index.html q.jpg #添加配置文件中的q图片
[root@localhost htdocs]# cd ..
[root@localhost httpd]# cd bin
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start
盗链网站清除缓存重新登陆
配置Apache隐藏版本信息
Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
工作中要配置Apache隐藏版本信息
-
将主配置文件httpd.confl以下行注释去掉
#Include conf/extra/httpd-default.conf
-
修改httpd-default.conf文件
Server Tokens Full修改为Server Tokens Prod
修改配置文件
[root@localhost bin]# vim /etc/httpd.conf
...
Include conf/extra/httpd-default.conf #将此行注释去掉
[root@localhost bin]# cd /usr/local/httpd/conf/extra
[root@localhost extra]# vim httpd-default.conf
ServerTokens Prod #Server Tokens Full修改为Server Tokens Prod
[root@localhost extra]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start