1、为什么要优化apache
在用户访问比较大时,apache工作效率会变低,在不提升硬件配置的情况下,优化apahce服务,能够缓解或增加访问量。提升web站点的安全性,提升数据流量等。
2、9种常用的优化方式
1.保持连接:保持客户端和web服务器之间的会话连接,减少三次握手和四次挥手的次数。
2.网页压缩:web服务器传输数据时,对数据进行压缩,节省流量。
3.网页缓存时间:调整网页缓存时间的长短
4.隐藏apache版本号:防止黑客通过版本号找到漏洞。
5.防盗链:防止其他网站盗链本站点的图片或视频,减少CPU运算量。
6.ab压力测试:测试服务器和apache服务的访问量,并发量等
7.apache日志分析:查看apache的日志,分析访问状态,统计访问数据。
8.apache日志分割:多个日志文件同时记录日志信息,大并发量访问时的日志写入。
9.apache工作模式:调整工作模式,完成不同并发量的处理。
3、保持会话
客户端在访问过程中,会发送链接请求(三次握手)和断开请求(四次挥手),而且是每个页面访问会发送一次。大量的链接请求占用网络带宽和服务器的CPU运算。
配置选项:
在httpd.conf文件中添加选项:
keepalive ON|OFF 是否打开保持连接功能。根据网站的并发请求量决定是否打开,高并发时打开,并发量不高时可选择关闭。
keepalive timeout 一次TCP连接多次HTTP请求之间的最大间隔时间,两次HTTP请求超过此时间连接将会断开。默认5秒
MaxKeepAliveRequests 一次TCP连接能够传输的最大HTTP请求数量。默认100
vim /etc/httpd/conf/httpd.conf
添加:
keepalive on
keepalivetimeout 60
maxkeepaliverequests 300
4、网页压缩
对web服务器发送的数据使用gzip格式进行压缩后,传输给浏览器,能够加快网页加载的速度,节省带宽,有利于搜索引擎抓取。但是会占用一定的CPU运算量。
Apache支持的压缩模块:
mod_gzip:类似gzip算法,压缩速度慢,压缩比例高,CPU占用略高,适用于访问量比较低的服务器。
mod_deflate:类似gzip算法,压缩速度快,压缩比例低,CPU占用低,适用于访问量比较高的服务器。
安装开源apache时,输入配置选项 --enable-deflate 启用压缩算法。
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript 对什么格式的内容启用压缩
DeflateCompressionLevel 9 压缩级别为9,范围是1-9,数字大压缩率高
SetOutputFilter DEFLATE 启用deflate压缩方式
vim /etc/httpd/conf/httpd.conf
添加:
AddoutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
DeflateCompressionLevel 9
SetOutputFilter deflate
1、apache页面缓存时间
1.客户端能够对网页内容进行缓存的集中情况:
1)服务器允许客户端进行页面缓存
2)服务器站点是静态页面
3)动态网站只能缓存结构,不能缓存数据库中的数据。
4)图片,视频,flash等可以缓存,但不能缓存人机对话的内容(游戏类)。
2.缓存的作用:
1)能够加快客户端访问重复页面内容的速度,如刷新页面或返回主页,后退等操作。
2)节省服务器的数据处理量和数据传输量。
3.配置选项:
vim /etc/httpd/conf/httpd.conf
添加:
<IfModule mod_expires.c>
ExpiresActive On ##启用页面缓存时间
ExpiresDefault "access plus 60 seconds" ##设置默认缓存1分钟
</IfModule>
4.源代码安装的apache需要在安装前配置模块
--enable-expires 启用缓存时间模块
2、隐藏apache的版本号
作用:防止黑客通过查询版本号,检测到响应的漏洞进行攻击。
1.rpm安装的apache修改方式:
vim /etc/httpd/conf/httpd.conf
添加:
ServerTokens Prod ##显示最少的信息,默认是Full显示完整信息
ServerSignature Off ##生成页面的页脚
2.源代码安装的apache修改方式:
vim /usr/local/httpd/conf/httpd.conf
添加:
ServerTokens Prod ##显示最少的信息,默认是Full显示完整信息
ServerSignature Off ##生成页面的页脚
3、防盗链
作用:本地网站上传的图片被其他网站盗用,在大量用户访问的情况下,本地网站的CPU运算量会大幅度提升。防盗链是为了禁止其他网站链接图片。
超链接:点击超链接后,页面会转到指定的位置。
盗链:在页面中显示其他指定页面的内容,由其他服务器进行运算。
vim /etc/httpd/conf/httpd.conf
在默认站点发布容器<Directory /var/www/html></Directory>中添加:
rewriteengine on
RewriteCond %{HTTP_REFERER} !^http://本地域名或IP地址/.*$ [NC] #格式:gg.cn
RewriteCond %{HTTP_REFERER} !^http://本地域名或IP地址$ [NC]
RewriteCond %{HTTP_REFERER} !^http://本地完整域名或IP地址/.*$ [NC] #格式:www.gg.cn
RewriteCond %{HTTP_REFERER} !^http://本地完整域名或IP地址$ [NC]
RewriteRule .*gif|jpg|png|swfgif|jpg|png|swf$ http://本地完整域名或IP地址/error.html [R,NC]
Require all granted
4、ab站点压力测试
作用:对服务器的高并发量模式工作,或高数据流传输工作进行测试,保障服务器上线后的稳定性。
使用Apache自带的ab命令进行初步测试。
语法:ab -n 请求数总和 -c 并发用户数 网站网址
ab -n 10000 -c 1000 http://192.168.10.2/index.html
压力测试过程中,除ab以外,还会使用以下方法:
1.使用黑客工具对端口并发链接进行测试,如DDOS测试
2.使用多用户在线访问测试。如:将服务器挂在广域网后,找很多用户在线测试(公测)
3.通过虚拟客户端,使用测试工具进行高并发量测试。
4.找专业测试团队进行测试。