目录
一、Apache网页优化
1.Apache网页优化概述
- 在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已不适用当今的互联网时代
- 为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容
- 优化内容
配置网页压缩功能
配置网页缓存
工作模式的选择与参数优化
配置隐藏版本号
配置防盗链
…
2.网页压缩
gzip介绍
- 配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器
- 作用:
降低了网络传输的字节数,加快网页加载的速度
节省流量,改善用户的浏览体验
gzip与搜索引擎的抓取工具具有更好的关系
Apache的压缩模块
- Apache实现网页压缩的功能模块包括:
mod_gzip模块
mod_deflate模块——系统资源占用率较低 - Apache 1.x
没有内建网页压缩技术,但可使用第三方mod_gzip 模块执行压缩 - Apache 2.x
在开发的时候,内建了mod_deflate 这个模块,取代mod_gzip - mod_gzip 模块与mod_deflate 模块
1.两者均使用gzip压缩算法,运作原理类似
2.mod_deflate压缩速度略快,而mod_gzip的压缩比略高
3.mod_gzip对服务器CPU的占用要高一些
4.高流量的服务器,使用mod_deflate可能会比mod_gzip加载速度更快
配置网页压缩功能
启用网页压缩功能步骤
查看是否安装mod_deflate模块
修改配置文件,启用压缩功能
访问测试
配置网页压缩步骤详解
1.将三个源码文件添加到/opt目录下,并查看
[root@server opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2
2.解压apr跨平台组件包和httpd源码包到当前目录下;并将跨平台组件包移动到源码包srclib目录下
[root@server opt]# tar zxvf apr-1.6.2.tar.gz
[root@server opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@server opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@server opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@server opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
3.安装编译器和其他工具(新增zlib-devel,压缩工具)
[root@server opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \ ##gcc、gcc-c++、make为编译工具
> pcre-devel \ ##支持正则表达式的工具
> expat-devel \ ##使网站能解析xml标记语言的工具
> perl \ ##perl语言工具
> zlib-devel ##压缩工具,做网页缓存必须有
4.configure配置(新增--enable-deflate压缩模块)
[root@server opt]# cd httpd-2.4.29/
[root@server httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \ ##指定路径
> --enable-so \ ##开启核心功能模块(Web服务)
> --enable-rewrite \ ##开启重写功能,如防盗链保护
> --enable-charset-lite \ ##字符集设定
> --enable-cgi \ ##开启通用网关接口,它定义了web服务器运行时外部程序的规范
> --enable-deflate ##增加压缩模块
5.make编译和make install安装
[root@server httpd-2.4.29]# make && make install
6.配置启动脚本
[root@server bin]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd ##将启动脚本复制到/etc/init.d/初始化脚本文件中,并重命名为httpd
[root@server bin]# cd /etc/init.d/
[root@server init.d]# ls
functions httpd netconsole network README
[root@server init.d]# vim httpd
#!/bin/sh ##在行首插入下两行内容(前面就是有#的),并保存退出
#chkconfig: 35 85 21 ##3(字符界面)和5(图形化界面)级别自动运行 第85个启动 第21个关闭
#description: Apache is a World Wide Web server ##描述信息,可不加
#
#...省略内容
[root@server init.d]# chkconfig --add httpd ##将httpd加入到service管理器
7.编辑配置文件
[root@server ~]# vim /usr/local/httpd/conf/httpd.conf
...省略内容
Listen 192.168.19.50:80 ##设置ipv4监听地址和端口
#Listen 80 ##将ipv6格式的监听端口注释掉
#
ServerName www.aa.com:80 ##设置域名地址
8.设置配置文件的软链接和httpd命令的软链接
[root@server bin]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
##设置配置文件的软链接,便于修改(原文件位置太长了)
[root@server bin]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ ##设置httpd命令的软链接
[root@server bin]# httpd -t ##这时可以使用httpd命令了(httpd -t:检查配置文件语法)
Syntax OK
[root@server bin]# apachectl -t
Syntax OK
9.开启apache服务
[root@server bin]# iptables -F ##清空防火墙规则
[root@server bin]# setenforce 0 ##关闭核心防护
[root@server bin]# systemctl restart httpd ##利用service启动apache服务
[root@server bin]# netstat -napt |grep 80 ##查看httpd 80端口,开启成功
tcp 0 0 14.0.0.30:80 0.0.0.0:* LISTEN 44819/httpd
...省略内容
1.检查是否安装了mod_deflate模块
[root@server ~]# apachectl -D DUMP_MODULES | grep "deflate"
2.配置mod_deflate模块启动
[root@server ~]# vi /usr/local/httpd/conf/httpd.conf
LoadModule deflate_module/mod_deflate.so #把前面的#删掉,启用mod_deflate模块
............#在文件末尾加入以下内容
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
DeflateCompressionLevel 9 #9代表压缩等级一般用6即可
SetOutputFilter DEFLATE
3.检测http.conf语法
[root@server ~]# apachectl -t
Syntax OK
4.检测模块是否安装
[root@server ~]# apachectl -D DUMP_MODULES | grep "deflate"
deflate_module(static)
5.重启apache
[root@server ~]# systemctl restart httpd
6.测试mod_deflate压缩是否生效
使用浏览器输入Apache服务器的IP,并使用Fiddler抓包工具,看到响应头中含有Content-Encoding:gzip,表示网页压缩生效
3.网页缓存
- 通过mod_expire模块配置Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求
- 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的
启用网页缓存功能步骤
查看是否安装mod_expire模块
修改配置文件启用缓存功能
访问测试
配置网页压缩步骤详解
1.检查是否安装了mod_deflate模块
[root@server ~]# apachectl -D DUMP_MODULES | grep "expires"
2.configure配置(新增–enable-expires)
[root@server ~]# cd /opt/httpd-2.4.29/
[root@server httpd-2.4.29]# ./configure --enable-expires
3.编译安装
[root@server httpd-2.4.29]# make && make install
4.修改http.conf配置文件
[root@server ~]# vi /etc/httpd.conf
LoadModule expires_module modules/mod_expires.so #把前面的#删掉,启用mod_expires模块
设置http协议下任意格式的文档均60秒后过期
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds" #设置http协议下任意格式的文档均60秒后过期,可以自行修改
</IfModule>
5.检测http.conf语法
[root@server ~]# apachectl -t
Syntax OK
6.检查是否安装了mod_deflate模块
[root@server ~]# apachectl -D DUMP_MODULES | grep "expires"
expires_module (shared)
7.重启apache
[root@server ~]# systemctl restart httpd
8.测试缓存是否生效
使用浏览器输入Apache服务器的IP,并使用Fiddler抓包工具,看到响应头中含有Expires项,表示网页压缩生效
二、Apache安全优化
1.隐藏版本信息
作用:一般情况下,软件的漏洞信息和特定的版本是相关的,因此,软件的版本号对攻击者来说是很有价值的,所以我们隐藏Apache的版本号,减少受攻击风险,保护服务器安全运行
ServerTokens输出格式
选项 | 输出格式 |
---|---|
Prod | Server:Apache |
Major | Server:Apache/2 |
Minor | Server:Apache/2.4 |
OS | Server:Apaceh/2.4.25(Unix) |
FULL | Server:Apache/2.4.25(Unix) PHP/4.22 MyMod/1.2 |
配置隐藏版本信息步骤详解
1.修改httpd.conf配置文件
[root@server ~]# vi /etc/httpd.conf
Include conf/extra/httpd-default.conf #删除前面的#
2.修改http-default.conf文件
[root@server ~]# vi /usr/local/httpd/conf/extra/httpd-default.conf
ServerTokens Prod #把Full改成Prod
ServerSignature Off #把On改成Off
3.检测http.conf语法
[root@server ~]# apachectl -t
Syntax OK
4.重启apache
[root@server ~]# systemctl restart httpd
5.测试版本信息是否隐藏生效
使用浏览器输入Apache服务器的IP,并使用Fiddler抓包工具,看到响应头中Apache版本号隐藏,表示隐藏版本信息成功
2.防盗链
配置Apache实现防盗链
- 防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片,文件,视频等相关资源
- 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
- 作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用
盗链模拟步骤
两台主机配置测试页面
盗链网站的测试网页,盗用源主机网站目录下的一个logo.jpg文件
在Windows中访问验证
配置防盗链步骤详解
环境准备
三台主机
IP地址 | 域名 | 用途 |
---|---|---|
192.168.10.50 | wwwaa.com | 源主机 |
192.168.10.40 | www.bb.com | 盗链网站 |
客户机 | windows 10 | 浏览器 |
要求源主机和盗链主机Apache工作正常,www.aa.com和www.bb.com能正常访问
盗链主机配置(注意:两张图片的格式不能相同)
在盗链主机上安装Apache(使用yum安装即可),在index.html写入网页内容
[root@server ~]# vi /var/www/html/index.html
<html><body>this is my web!!!<img src="http://192.168.10.50/1.png"/></body></htmll>
源主机上配置
1.检查Apache是否安装了mod_rewrite模块
[root@server ~]# apachectl -D DUMP_MODULES | grep "rewrite"
如果输出中没有rewrite_modules(static),则说明编译时没有安装mod_rewrite 模块
2.configure配置(新增–enable-rewrite)
[root@server ~]# cd /opt/httpd-2.4.29/
[root@server httpd-2.4.29]# ./configure --enable-rewrite ##开启重写功能,防盗链保护
3.重新编译安装
[root@server httpd-2.4.29]# make && make install
4.修改httpd.conf配置文件
[root@server ~]# vi /etc/httpd.conf
LoadModule rewrite_module module/mod_rewrite.so #删除前面的#,开启重写功能
AllowOverride All #None改为All
RewriteEngine On
RewriteCond %{HTTP_REFERED} !^192.168.10.50/.*$ [NC]
RewriteCond %{HTTP_REFERED} !^192.168.10.50$ [NC]
RewriteCond %{HTTP_REFERED} !^192.168.10.50/* [NC]
RewriteRule .*\.(gif|jpg|swf)$ 192.168.10.50/error.png [R,NC]
5.检测http.conf语法
[root@server ~]# apachectl -t
Syntax OK
6.检查是否安装了mod_deflate模块
[root@server ~]# apachectl -D DUMP_MODULES | grep "rewrite"
rewrite_module (shared)
7.测试
先用浏览器访问192.168.10.50,可以看到下图
做防盗链之前,是通过192.168.10.40可以盗图并访问
做完防盗链后再次访问192.168.10.40,则会访问到设置好的防盗图片