您的位置:首页 > 运维架构 > Apache

Apache配置优化

2018-02-06 22:24 204 查看
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

例如:

<VirtualHost *:80>

    ServerAdmin 31333741@qq.com

    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

</VirtualHost>

#创建日志轮询的目录

[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:可以使用火狐浏览器添加查看压缩比例的工具

#配置虚拟机配置文件

在虚拟主机中添加如下配置:

       <ifmodule mod_deflate.c>

          DeflateCompressionLevel 9

          SetOutputFilter DEFLATE

          DeflateFilterNote Input instream

          DeflateFilterNote Output outstream

          DeflateFilterNote Ratio ratio

       </ifmodule>

/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

像这样:

<Directory "/var/blog">

    Options FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

11.禁止用户重载

<Directory "/var/blog">

    Options FollowSymLinks

    AllowOverride None   #禁止用户覆盖(重载)

    Order allow,deny

    Allow from all

</Directory>

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

12.关闭CGI

<IfModule alias_module>

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

</IfModule>

<IfModule cgid_module>

</IfModule>

<Directory "/application/apache2.2.34/cgi-bin">

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

</Directory>

(#删除以上配置,过滤注释查看配置文件 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根据目录或扩展请求后面对于的服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Apache配置优化