Web服务器群集--Apache配置与应用

简介

  • Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源、跨平台、功能模拟化、可灵活定制等诸多优点,其不仅性能稳定,在安全性方面的表现也非常出色。这里主要涉及,Apache连接保持、Apache访问控制、Apache日志管理的方法介绍。

1.Apache连接保持

1.1 为什么要保持连接

  • HTTP协议是基于TCP协议之上的,在进行HTTP连接之前,要先进行TCP连接,每个TCP连接都要进行三次握手与四次挥手。建立与关闭连接对于HTTP协议而言会消耗很多的内存与CPU资源。
  • HTTP连接保持就能解决这个问题。尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗。

1.2 Apache连接保持相关参数

  • KeepAlive
    是否打开连接保持,OFF关闭,ON打开
  • KeepAliveTimeout
    表示一次连接多次请求之间的最大间隔时间,两次请求超过该时间,连接就会自动断开
  • MaxKeepAliveRequests
    一次连接能够传输的最大请求数量,超过此最大请求数量就会断开连接

2.Apache访问控制

2.1 Apache访问控制概述

  • 作用:控制对网站资源的访问、为特定的网站目录添加访问授权。
  • 常用访问控制方式:客户机地址限制、用户授权限制。

注意:客户机地址限制、用户授权限制,这两种访问控制方式都应用于httpd.conf配置文件中的目录区域

<Directory 目录位置>······</Directory>范围内

2.2 客户端地址的访问控制

  • 通过配置项 Order、Deny from、Allow from ,可以根据客户机的主机名或 IP地址来决定是否允许客户端访问。其中,使用Require配置项实现访问控制,按先后顺序限制 Order 配置用于设置限制顺序,Deny from 和 Allow from 用来设置限制内容。

  • 使用Require配置项实现访问控制,按先后顺序限制,Require配置项的常见语法Require all granted

Require all granted //允许所有人访问
Require all denied 	//拒绝所有人访问
Require local 		//允许本地用户访问
Require [not] host <主机名或域名列表>	//允许或者禁止某些主机或域名访问
Require [not] ip <IP地址或网段列表>	//允许或者禁止某些IP地址或网段访问
//使用not禁止访问时要将其置于<RequireAll>······</RequireAll>容器中,并在容器中指定相对应的限制策略
  • Require配置应用实例:
[root@localhost ~]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# mkdir abc
[root@localhost conf]# ls
abc  httpd.conf  magic
[root@localhost conf]# cd abc
[root@localhost abc]# vim vhost.conf
<VirtualHost *:80>
 ...省略内容
  <Directory "/var/www/html">
  Require not ip 192.168.140.15		//表示不允许ip地址192.168.140.15访问
  Require all granted
  </Directory>
</VirtualHost>
...省略内容

注意:
在apache主配置文件中,需要将Require配置项添加在 容器中;
同时需要配置在<Directory “/var/www/html”> 配置段中,对该目录下的网页的访问进行限制。

2.3 用户授权限制

1)创建用户认证数据库

  • 命令基本格式如下:
    -c:create,新建用户时使用
    /etc/httpd/conf/user:新建保存用户信息的密码文件

示例:

//htpasswd命令是httpd自带的
[root@localhost ~]# htpasswd -c /etc/httpd/conf/abc webadm  //为用户webadm创建密码文件
New password//输入密码
Re-type new password//重复输入密码
Adding password for user webadm
[root@localhost ~]# cat /etc/httpd/conf/abc		//确认用户数据文件
webadm:webadm:$apr1$mQehosKB$UHVnvesYwpV/YCZNqqG7N.	//加密密码

2)添加用户授权配置

  • 配置基本格式
  <Directory "/var/www/html">
  AuthName "DocumentRoot"  //指定受保护的领域名称,可以自己命名
  AuthType Basic		//指定认证类型
  AuthUserFile /etc/httpd/conf/user  //指定用户认证账号文件
  Require valid-user  //要求通过认证才能访问
  </Directory>

3)vhost.conf主配置文件设置

[root@localhost abc]# vim vhost.conf 
...		//省略内容
<VirtualHost 192.168.140.14:80>
  DocumentRoot "/var/www/html/aa"
  ServerName www.aa.com
  Errorlog "logs/www.aa.com.error_log"
  Customlog "logs/www.aa.com.custom_log" common
  <Directory "/var/www/html">
  AuthName "DocumentRoot"
  AuthType Basic
  AuthUserFile /etc/httpd/conf/abc		//指定abc数据文件中的某一用户访问系统
  Require valid-user
  </Directory>
</VirtualHost>
...		//省略内容

3.Apache日志管理

3.1 日志分割

  • 随着网站的访问量增大,默认情况下Apache的单个日志文件也会越来越大:日志文件占用磁盘空间很大,查看相关信息不方便;
  • 对日志文件进行分割:Apache自带rotatelogs分割工具实现,第三方工具cronolog分割。

3.2 rotatelogs分割工具

  • 配置网站的日志文件转交给rotatelogs分割处理,配置格式为
ErrorLog "| rotatelogs 命令的绝对路径 -l 日志文件路径/网站名-error_%Y%m%d.log 86400"	
			//which rotatelogs命令查看绝对路径,%Y%m%d表示年月日,86400表示一天的秒数
CustomLog "| rotatelogs 命令的绝对路径 -l 日志文件路径/网站名-access_%Y%m%d.log 86400" combined 

示例:

[root@localhost logs]vim /etc/httpd/conf/httpd.conf	//进入apache的主配置文件
...		//省略内容
ErrorLog "| /usr/sbin/rotatelogs -l logs/error_%Y%m%d.log 86400"
CustomLog "| /usr/sbin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined 
  • 日志文件的产生
    服务安装后,不会生成日志文件不会产生
    服务启动后,生成日志文件
    访问服务后,日志文件会生成内容

3.3 第三方工具cronolog

  • 源码编译安装cronolog工具

  • 配置网站日志文件转交给cronolog分割处理,配置格式

ErrorLog "| cronolog命令的绝对路径 日志文件路径/网站名-error_%Y%m%d.log"
	//管道符号
CustomLog "| cronolog命令的绝对路径 日志文件路径/网站名_%Y%m%d.log" combined            
	//-l 指定日志文件路径,这里不要用-l 用了会生成不了日志

示例:

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf    ##进入apache的主配置文件
...省略内容
ErrorLog "| /usr/sbin/cronolog  logs/www.test.com.error_%Y%m%d.log"
CustomLog "| /usr/sbin/cronolog  logs/www.test.com.access_%Y%m%d.log" combined
...省略内容

4.AWStats日志分析系统

AWStats概述:

  • perl语言(骆驼语言)开发的一款开源日志分析系统;
  • 可用来分析Apache,Samba,vsftpd,IIS 等服务器的访问日志;
  • 信息结合crond等计划任务服务,可对日志内容定期进行分析。

部署AWStats环境准备

1)安装AWStats软件包

[root@localhost opt]# mkdir /usr/local/awstats
[root@localhost opt]# tar zxf awstats-7.6.tar.gz -C /usr/local/awstats

2)建立配置文件

[root@localhost ~]# cd /usr/local/awstats/awstats-7.6/tools/
[root@localhost tools]# ls
awstats_buildstaticpages.pl  dolibarr            maillogconvert.pl   xslt
awstats_configure.pl         geoip_generator.pl  nginx
awstats_exportlib.pl         httpd_conf          urlaliasbuilder.pl
awstats_updateall.pl         logresolvemerge.pl  webmin
[root@localhost tools]# ./awstats_configure.pl     ##软件包解压后的tools工具中自带配置脚本
...省略内容
Enter full config file path of your Web server.
Config file path ('none' to skip web server setup):
> /etc/httpd/conf/httpd.conf      //输入Web服务器的主配置文件地址
What is the name of your web site or profile analysis ?
Your web site, virtual server or profile name:
> www.test.com                    //输入域名
...省略内容
-----> Create config file '/etc/awstats/awstats.www.test.com.conf'   //为要统计的站点建立的配置文件
 Config file /etc/awstats/awstats.www.test.com.conf created.
...省略内容
You can also read your statistics for 'www.test.com' with URL:
> http://localhost/awstats/awstats.pl?config=www.test.com     //AWStats日志分析系统的登录地址
//其余操作按 "y 或者 回车" 即可

3)编辑要统计的站点主配置文件参数

[root@localhost tools]# vim /etc/httpd/conf/httpd.conf 
...省略内容
<Directory "/usr/local/awstats/awstats-7.6/wwwroot">        ##搜索“awstats”可以快速定位
    Options None
    AllowOverride None
  #Order allow,deny              ##添加注释
  #Allow from all                   ##添加注释 
  Require all granted              ##允许所有人访问
</Directory>
...省略内容

4)修改刚才新建的站点统计配置文件

[root@localhost tools]# vim /etc/awstats/awstats.www.test.com.conf
...省略内容
LogFile="/var/log/httpd/access_log"            ##修改访问日志文件位置
...省略内容
DirData="/var/lib/awstats"                            ##awstats文件默认不存在,需要创建
...省略内容
[root@localhost tools]# mkdir /var/lib/awstats
[root@localhost tools]# systemctl start httpd

5)重启apache服务后,登录AWStats日志分析系统的地址

[root@localhost named]# systemctl restart httpd
http://www.test.com/awstats/awstats.pl?config=www.test.com

6)使用awstats软件包tools目录下的更新脚本更新数据

[root@localhost named]# cd /usr/local/awstats/awstats-7.6/tools/
[root@localhost tools]# ls
awstats_buildstaticpages.pl  dolibarr            maillogconvert.pl   xslt
awstats_configure.pl         geoip_generator.pl  nginx
awstats_exportlib.pl         httpd_conf          urlaliasbuilder.pl
awstats_updateall.pl         logresolvemerge.pl  webmin
[root@localhost tools]# ./awstats_updateall.pl now

注意:由于每次手动输入不现实,可结合crontab计划性任务更新数据

[root@localhost tools]# crontab -e
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now

7)优化awstats网页地址

[root@localhost tools]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# vim aws.html
<html>
 <head>
  <meta http-equiv=refresh content="0;
   url=http://192.168.140.14/awstats/awstats.pl?config=www.test.com">
 </head>
 <body></body>
</html>
//这样就可以使用http://192.168.140.14/aws.html 来访问了
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页