Apache配置优化

Apache配置优化


1、配置Apache日志轮询工具cronolog
cd /home/zxin10/tools
rz
tar xf cronolog-1.6.2.tar.gz 
cd cronolog-1.6.2
 ./configure 
make
make install
安装成功:
[root@c601 cronolog-1.6.2]# ll /usr/local/sbin/cronolog
-rwxr-xr-x 1 root root 40446 Feb  3 12:55 /usr/local/sbin/cronolog




cronolog日志轮询配置说明
[root@c601 cronolog-1.6.2]# cd /application/apache/conf/extra/
[root@c601 extra]# vi httpd-vhosts.conf
(在站点下添加如下配置)
    CustomLog "|/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log" combined
例如:

    ServerAdmin [email protected]
    DocumentRoot "/var/blog"
    ServerName blog.etiantian.org
    ServerAlias etiantian.org
    ErrorLog "logs/blog-error_log"
    #CustomLog "logs/blog-access_log" common
    CustomLog "|/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log" combined

#创建日志轮询的目录
[root@c601 extra]# mkdir -p /app/logs
#在浏览器端访问网站,查看测试结果。
[root@c601 extra]# tail -f /app/logs/access_www_20180203.log 
192.168.0.101 - - [03/Feb/2018:13:15:20 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
192.168.0.101 - - [03/Feb/2018:13:15:20 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
192.168.0.101 - - [03/Feb/2018:13:15:20 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
192.168.0.101 - - [03/Feb/2018:13:15:20 +0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"


2、错误页面优雅显示
可以将404等错误页面重定向到网站首页或其他页面,提升用户体验。
[root@c601 conf]# pwd
/application/apache/conf
[root@c601 conf]# vi httpd.conf
#添加如下内容
ErrorDocument 404 /http://www.51cto.com
#
[root@c601 conf]# ../bin/apachectl -t
Syntax OK
[root@c601 conf]# ../bin/apachectl graceful


3.mod_deflate文件压缩功能
Gzip的思想就是把文件先在服务器端进行压缩,然后在传输。这样可以显著减少文件传输的大小。文件传输完毕后浏览器会重新对压缩
过得内容进行解压缩,没特殊情况,所有的文本内容都应该被gzip压缩:html(php),js,css,xml,txt等等,因为首页上还有很多广告
投放的js,这样广告代码的拥有者的网站的js没有经过gzip压缩,是由于需要每次加载进而统计信息。
添加以下内容到指定的虚拟主机中: extra/httpd-vhosts.conf
#查看压缩模块是否安装
[zxin10@c601 ~]$ /application/apache/bin/apachectl -l|grep mod_deflate
  mod_deflate.c
如果没有如何编译呢?
可以使用DSO方法编译
cd /home/tools/httpd-2.2.23/modules/filters/
/application/apache/bin/apxs -c -i -a mod_deflate.c
ll /application/apache/modules/
PS:可以使用火狐浏览器添加查看压缩比例的工具
#配置虚拟机配置文件
在虚拟主机中添加如下配置:
       
          DeflateCompressionLevel 9
          SetOutputFilter DEFLATE
          DeflateFilterNote Input instream
          DeflateFilterNote Output outstream
          DeflateFilterNote Ratio ratio
       

/application/apache/bin/apachectl -t
Syntax OK
[root@c601 extra]# /application/apache/bin/apachectl graceful
[root@c601 extra]# lsof -i:80
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   2013   root    4u  IPv6  10981      0t0  TCP *:http (LISTEN)
httpd   4710 daemon    4u  IPv6  10981      0t0  TCP *:http (LISTEN)
httpd   4711 daemon    4u  IPv6  10981      0t0  TCP *:http (LISTEN)
4.mod_expires缓存
现在越来越多的图片,脚本,css,flash被嵌入到页面中,当我们访问他们的时候势必会做许多次的http请求。
其实我们可通过设置expires header来缓存这些文件。expire其实就是通过header报文来指定特定类型文件在
浏览器中的缓存时间。
在虚拟主机配置文件下加入如下配置:
    ExpiresActive on
    ExpiresDefault "access plus 12 month"
    ExpiresByType text/html "access plus 12 month"
    ExpiresByType text/css "access plus 12 month"
    ExpiresByType image/jpeg "access plus 12 month"
    ExpiresByType image/jpg "access plus 12 month"
    ExpiresByType image/png "access plus 12 month"
    ExpiresByType application/x-shockwave-flash "access plus 12 month"
    ExpiresByType application/x-javascript "access plus 12 month"
    ExpiresByType video/x-flv "access plus 12 month"
检查重启apache服务
测试:配置前的访问记录
[root@c601 extra]# curl -I 192.168.0.252/husky.jpg
HTTP/1.1 200 OK
Date: Tue, 06 Feb 2018 13:04:19 GMT
Server: Apache/2.2.34 (Unix) DAV/2
Last-Modified: Tue, 06 Feb 2018 13:03:30 GMT
ETag: "476f7-7bd1-5648ace1fac80"
Accept-Ranges: bytes
Content-Length: 31697
Vary: Accept-Encoding
Content-Type: image/jpeg
测试:配置后的访问记录
[root@c601 extra]# curl -I 192.168.0.252/husky.jpg
HTTP/1.1 200 OK
Date: Tue, 06 Feb 2018 13:10:31 GMT
Server: Apache/2.2.34 (Unix) DAV/2
Last-Modified: Tue, 06 Feb 2018 13:03:30 GMT
ETag: "476f7-7bd1-5648ace1fac80"
Accept-Ranges: bytes
Content-Length: 31697
Cache-Control: max-age=31104000
Expires: Fri, 01 Feb 2019 13:10:31 GMT
Vary: Accept-Encoding
Content-Type: image/jpeg
可以看到缓存成功了!
5.更改apache的默认用户
[root@c601 conf]# useradd -M -s /sbin/nologin zxin11
[root@c601 conf]# vi /application/apache/conf/httpd.conf
#需改配置如下:
User zxin11
Group zxin11
6.使用worker模式,提升并发数
编译安装时,使用worker模式。
7.屏蔽apache版本信息。
1)修改httpd.conf文件,打开httpd-default.conf模块
2)修改httpd-default文件,ServerSignature Off以及ServerTokens Prod
之后apachectl graceful。
3)或者修改apache源代码,重新编译。
7.apache目录文件权限设置(root,目录755,文件644)
提示:在网站架构中,应该把资源文件,包括用户上传的图片,附件和程序分离,最好把上传程序也分离,
这样就可从容授权了。
一般公司授权:(太不专业了,很危险)
1)chmod -R 777 /sitedir
2)chmod -R apache.apache /sitdir
8.开启http-mpm.conf增加连接数。
9.apache防盗链功能
转载博客:http://blog.51cto.com/oldboy/909696
具体配置以后添加。。。。
10.禁止目录Index
像这样:

    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

11.禁止用户重载

    Options FollowSymLinks
    AllowOverride None   #禁止用户覆盖(重载)
    Order allow,deny
    Allow from all

#加快服务器速度,因为他不再为每个请求寻找每个目录访问控制文件(.htaaccess)。
12.关闭CGI

    ScriptAlias /cgi-bin/ "/application/apache2.2.34/cgi-bin/"




    AllowOverride None
    Options None
    Order allow,deny
    Allow from all

(#删除以上配置,过滤注释查看配置文件 egrep -v "^.*#|^$" httpd.conf)
15.apache的安全模块
mod_evasive20防DDOS、mod_limitipconn(针对单站点)配置、mod_security2防SQL注入等)
16.正确途径取得源代码,勤打apache补丁
17.apache日志授予root 700授权
18.系统内核参数优化
19.禁止PHP解析指定站点目录
20.使用tmpfs文件系统访问经常访问的目录
21.尽可能减少HTTP请求数
22.使用CDN
23.apache程序架构优化
1)程序页面服务器、2)图片附件服务器 3)上传服务器 三者的功能尽量分离。
a)分离的最佳方法是分别使用独立服务器
b)次选方案在前端负载均衡器通过haproxy/nginx根据目录或扩展请求后面对于的服务器。

你可能感兴趣的:(Linux学习笔记)