Apache配置与应用

一、Apache 连接保持

Apache连接保持相关参数

  • KeepAlive
    • 是否打开链接保持
  • KeepAliveTimeout
    • 一次性连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
  • MaxKeepAliveRequests
    • 一次长连接能够传输的最大请求数量

二、Apache 访问控制

Apache访问控制概述

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

客户机地址限制

  • 通过 Require 配置项,可以根据客户端的主机名或 IP 地址来决定是否允许客户端访问。
  • 在 httpd 服务主配置文件的、、、配置段中均可以使用 Require 配置项来控制客户端的访问。
  • 使用 Require 配置项时,需要设置客户端地址以构成完整的限制策略,地址形式可以是 IP 地址、网络地址、主机名或域名。
  • 当 Require 配置项之后为“all”时,表示匹配任意地址。限制策略的格式如下所示。
    • Require all granted:允许所有主机访问;
    • Require all denied:拒绝所有主机访问;
    • Require local:仅允许本地主机访问;
    • Require [not] host <主机名或域名列表>:允许或拒绝指定主机或域名访问;
    • Require [not] ip <IP 地址或网段列表>:允许或拒绝指定IP 地址网络访问。

用户授权限制

  • httpd 服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。
    • 使用摘要认证需要在编译 httpd 之前添加“–enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证;
    • 而基本认证是 httpd 服务的基本功能,不需要预先配置特别的选项。
  • 基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程。
    • 认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。
    • 下面将以基本认证方式为例,添加用户授权限制。

1.创建用户认证数据文件

  • httpd 的基本认证通过校验用户名、密码组合来判断是否允许用户访问。
  • 授权访问的用户账号需要事先建立,并保存在固定的数据文件中。
  • 使用专门的 htpasswd 工具程序,可以创建授权用户数据文件,并维护其中的用户账号。
  • 使用 htpasswd 工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文件。
  • 若省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。

2. 添加用户授权配置

  • 有了授权用户账号以后,还需要修改 httpd.conf 配置文件,在特定的目录区域中添加授权配置,以启用基本认证并设置允许哪些用户访问。
  • AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
  • AuthType:设置认证的类型,Basic 表示基本认证。
  • AuthUserFile:设置用于保存用户账号、密码的认证文件路径。
  • require valid-user:要求只有认证文件中的合法用户才能访问。
  • 其中,valid-user 表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如 webadmin)。

3. 验证用户访问授权

  • 当访问系统时,浏览器会首先弹出认证对话框,如图所示。
  • 只有输入正确的用户名和密码后才能查看特定目录下的网站资源,否则将拒绝访问。

三、Apache访问日志

日志分割

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

四、实验报告

资源列表

操作系统配置主机IP
CentOS7.3.16112C4Gapache192.168.72.154

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config

一、安装依赖

yum -y install gcc gcc-* make
yum -y install apr-util-devel pcre-devel zlib-devel

二、源码编译及安装

1、解包

tar zxf httpd-2.4.25.tar.gz -C /usr/src
cd /usr/src/httpd-2.4.25/

2、配置编译安装

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
# --prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
# --enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
# --enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
# --enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页。
# --enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。

make && make install

3、优化执行路径

  • 通过源码编译安装的 httpd 服务,程序路径并不在系统默认的搜索路径中,为了使 该服务在使用时更加方便,可以为相关程序添加符号链接
ln -s /usr/local/httpd/bin/* /usr/local/bin
ls -l /usr/local/bin/httpd /usr/local/bin/apachectl

4、添加为系统服务

  • 在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件, 用于控制由 Systemd 管理或监控的 httpd 服务
cat > /lib/systemd/system/httpd.service << 'EOF'
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
EOF

systemctl start httpd.service
systemctl enable httpd.service

三、客户机地址限制

[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf 
# 在 251 行注释 Require all granted 
    #Require all granted 
# 在 252 行添加 Require ip 127.0.0.1 
    Require ip 127.0.0.1
# 在 253 行添加 Require ip 192.168.73.1 
    Require ip 192.168.73.1     # Windows打开cmd输入ipconfig查看VMnet8的IP允许Windows连接

Require all granted        :允许所有主机访问
Require all denied         :拒绝所有主机访问
Require local              :仅允许本地主机访问
Require [not] host <主机名或域名列表> :允许或拒绝指定主机或域名访问
Require [not] ip <IP 地址或网段列表>  :允许或拒绝指定 IP 地址网络访问
也可以写网段 写那个就是允许那个连接

<RequireAll>
Require all granted
Require not ip 192.168.0.0/24 192.168.1.0/24
</RequireAll>
[root@bogon ~]# systemctl restart httpd 重启服务 只要修改配置文件就重启服务 

四、用户授权限制

1、创建用户认证数据文件

[root@bogon ~]# cd /usr/local/httpd/
[root@bogon httpd]# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin
# 密码 123 ,输入两次,不显示密码
New password:
Re-type new password:
Adding password for user webadmin
[root@bogon httpd]# cat /usr/local/httpd/conf/.awspwd         # 确认用户数据文件
webadmin:$apr1$bwZSdpMv$p2m2yw2Vwxo8b7gPoB5Mb.

2、添加用户授权配置

[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf
……     # 省略部分内容
# 在 Directory 里面最下面添加以下四行代码
<Directory "/usr/local/httpd/htdocs">
……     # 省略部分内容
# 在 251 行注释 Require all granted 
    #Require all granted 
    AuthName "DocumentRoot"
    AuthType Basic
    AuthUserFile /usr/local/httpd/conf/.awspwd
    Require valid-user
</Directory>
[root@bogon ~]# systemctl restart httpd     # 重启服务使配置生效

AuthName            :定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。
AuthType            :设置认证的类型,Basic 表示基本认证。
AuthUserFile        :设置用于保存用户账号、密码的认证文件路径。其中,valid-user 表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如 webadmin)。

3.验证用户访问授权

在这里插入图片描述

五、Apache 日志分割

1、Apache 自带 rotatelogs 分割工具

# 自带的日志分割
[root@bogon ~]# mkdir /var/log/httpd
[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf
# 在 277 行注释 ErrorLog "logs/error_log"
    #ErrorLog "logs/error_log"
# 在 278 行添加 ErrorLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"
    ErrorLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/error_%Y%m%d.log 86400"
# 在 307 行注释 CustomLog "logs/access_log" common
    #CustomLog "logs/access_log" common
# 在 308 行添加 CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined
    CustomLog "|/usr/local/bin/rotatelogs -l /var/log/httpd/access_%Y%m%d.log 86400" combined
[root@bogon ~]# systemctl restart httpd        # 重启服务使配置生效
[root@bogon ~]# ls /var/log/httpd/
error_20240709.log

2、使用第三方工具 cronolog 分割

# 编译安装 cronolog 工具
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make && make install

# 设置 cronolog 工具工具分割 apache 日志
[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf
# 在 277 行注释 ErrorLog "logs/error_log"
    #ErrorLog "logs/error_log"
# 在 278 行添加 ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/www.kgc.com-error_%Y%m%d.log"
    ErrorLog "|/usr/local/sbin/cronolog /var/log/httpd/www.kgc.com-error_%Y%m%d.log"
# 在 307 行注释 CustomLog "logs/access_log" common
    #CustomLog "logs/access_log" common
# 在 308 行添加 CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/www.kgc.com-access_%Y%m%d.log" combined
    CustomLog "|/usr/local/sbin/cronolog /var/log/httpd/www.kgc.com-access_%Y%m%d.log" combined

[root@bogon ~]# systemctl restart httpd

六、AWStats日志分析

1、部署 AWStats 分析系统

# 上传awstats-7.7.tar.gz软件包
# 安装 AWStats 软件包
tar zxf awstats-7.7.tar.gz
mv awstats-7.7 /usr/local/awstats

yum -y install perl
# 为要统计的站点建立配置文件
cd /usr/local/awstats/tools/
chmod +x awstats_configure.pl
./awstats_configure.pl
# 1.指定 httpd 主配置文件的路径
/usr/local/httpd/conf/httpd.conf        # 输入 httpd.conf 配置文件的路径
# 2.为指定 Web 站点创建配置文件
y                  # 确认创建新的站点配置文件
www.kgc.com        # 指定要统计的目标网站名称
一律回车            # 直接按 Enter 键接受默认设置
# 3.后续配置工作
[root@bogon ~]# vi /usr/local/httpd/conf/httpd.conf
# 在 312 行取消注释 CustomLog "logs/access_log" combined
    CustomLog "logs/access_log" combined
# 在 146 行取消注释 LoadModule cgid_module modules/mod_cgid.so
    LoadModule cgid_module modules/mod_cgid.so
# 在 149 行取消注释 LoadModule cgi_module modules/mod_cgi.so
    LoadModule cgi_module modules/mod_cgi.so
# 在末行 注释 Order allow,deny 和 Allow from all 并添加 Require all granted
<Directory "/usr/local/awstats/wwwroot">
    Options None
    A11owOverride None
    #Order allow,deny
    #Allow from all
    Require all granted
</Directory>

# 删除之前配置的日志分割,没有则省略
[root@bogon tools]# rm -rf /usr/local/httpd/logs/access_log 
[root@bogon tools]# rm -rf /usr/local/httpd/logs/error_log 
[root@bogon tools]# systemctl restart httpd
[root@bogon tools]# ls /usr/local/httpd/logs/
access_log  cgisock.30029  error_log  httpd.pid

[root@bogon tools]# vi /etc/awstats/awstats.www.kgc.com.conf
# 在 50 行修改 LogFile="/usr/local/httpd/logs/access_log"
    LogFile="/usr/local/httpd/logs/access_log"

2、执行日志分析,并设置 cron 计划任务

# 创建目录
mkdir /var/lib/awstats
cd /usr/local/awstats/tools/
chmod +x awstats_updateall.pl
./awstats_updateall.pl now
# 浏览器进入 AWStats工具进行网站流量统计的页面
http://192.168.72.154/awstats/awstats.pl?config=www.kgc.com
# 创建周期任务
[root@bogon ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@bogon ~]# crontab -l
*/5 * * * * /usr/local/awstats/tools/awstats_updateall.pl now
        # 每天执行一次 awstats_updateall.pl 脚本

七、访问 AWStats 分析系统

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值