1、第19章 Apache进阶,本章内容要点,虚拟主机 认证和授权 日志管理,2019年5月30日,2,本章学习目标,掌握基于IP和域名的虚拟主机配置 掌握认证和授权的配置 掌握Apache的日志配置 学会配置虚拟主机的分离日志及其日志滚动,2019年5月30日,3,虚拟主机,2019年5月30日,4,虚拟主机简介,在一台Web服务器上,通过多个独立的IP地址、域名或端口号提供不同的Web站点 基于IP地址的虚拟主机 每个网站拥有不同的 IP 地址 通过访问服务器上不同的IP地址访问不同的网站 基于域名的虚拟主机 所有的虚拟主机可以共享同一个IP地址 使用不同的域名来访问不同的网站 基于端口的虚拟
2、主机 所有的虚拟主机可以共享同一个IP地址 各虚拟主机之间通过不同的端口号进行区分,2019年5月30日,5,虚拟主机注意事项,可以在一台主机上混合配置不同方式的虚拟主机 在一台主机上配置基于IP的虚拟主机时 既可以安装配置多个网络接口 也可以为一个网络接口绑定多个 IP 地址 无论哪一种虚拟主机,都应该配置域名解析 只有基于IP的虚拟主机可以使用IP地址和域名访问 基于域名的虚拟主机只能使用域名访问,2019年5月30日,6,虚拟主机配置指令,VirtualHost 容器内使用的指令 ServerName:用于指定虚拟主机的名称和端口号 ServerAdmin:用于指定虚拟主机的管理员E-m
3、ail地址 DocumentRoot:用于指定虚拟主机的根文档目录 ErrorLog:用于指定虚拟主机的错误日志存放路径 CustomLog:用于指定虚拟主机的访问日志存放路径 使用 、 等容器设置访问控制等 VirtualHost 容器之外使用的指令 NameVirtualHost :用于为一个和多个基于域名的虚拟主机指定一个IP地址和端口 IP地址可以使用*表示本机配置的所有IP地址 省略端口部分表示80端口,2019年5月30日,7,主服务器配置 与虚拟主机配置的关系,覆盖性 VirtualHost 容器中的指令会覆盖主服务器范围内同名的配置指令 主服务器(Main Server)范围内
4、的配置指令(在所有 容器之外的指令,包括主配置文件使用Include包含的配置文件中的指令) 仅在它们没有被VirtualHost 容器的配置覆盖时才起作用 继承性 每个虚拟主机都会从主服务器配置继承相关的配置 例如:虚拟主机会继承主服务器的DirectoryIndex,2019年5月30日,8,使用单独的 虚拟主机配置文件,配置虚拟主机时可以在主配置文件中进行 为了方便维护虚拟主机的配置,通常为某个虚拟主机或某组虚拟主机使用单独的配置文件,2019年5月30日,9,修改主配置文件 /etc/htpd/conf/httpd.conf NameVirtualHost *:80 Include v
5、hosts.d/*.conf 创建存放虚拟主机配置文件的目录 # mkdir /etc/httpd/vhosts.d,配置基于IP的虚拟主机,基于IP的虚拟主机的配置步骤 在一台主机上配置多个IP地址并配置域名解析 创建文档目录和测试主页 修改配置文件添加虚拟主机配置 重新启动 Apache,分别使用IP和域名进行访问测试 基于IP的虚拟主机的配置举例,2019年5月30日,10,参考教材中的操作步骤,配置基于域名的虚拟主机,基于域名的虚拟主机的配置步骤 配置虚拟主机的域名解析 创建文档目录和测试主页 修改配置文件添加虚拟主机配置 重新启动 Apache,使用域名进行访问测试 基于域名的虚拟主
6、机的配置举例,2019年5月30日,11,参考教材中的操作步骤,默认服务器(default server),当配置了基于域名的虚拟主机后, Apache将配置文件中第一个基于域名的虚拟主机配置视为默认服务器(虚拟主机) 对本机不存在的虚拟主机的访问定向到默认虚拟主机 当配置了基于域名的虚拟主机后,若还希望访问主服务器(文档目录为 /var/www/html),则应该为之添加一个基于域名的虚拟主机配置 可以通过 httpd -S 命令查看默认服务器,2019年5月30日,12,认证和授权,2019年5月30日,13,认证和授权简介,Apache的认证和授权(基于用户的访问控制) 认证和授权是 A
7、pache 允许指定用户使用用户名和口令访问特定资源的一种方式 认证(Authentication)是指任何识别用户身份的过程 授权(Authorization)是允许特定用户访问特定区域或信息的过程 认证和授权也称弱验证 认证和授权的配置指令既可以出现在主(或其包含的)配置文件的或容器中,也可以出现在./htaccess文件中,2019年5月30日,14,两种认证,2019年5月30日,15,认证和授权的证书存储 和相关模块,通常使用纯文本文件存储认证口令证书 为了加快检索可以使用DBM数据库 为了与其他应用集成可以使用关系数据库或LDAP存储,2019年5月30日,16,认证相关指令,定义
8、受保护领域的名称 AuthName 定义使用的认证方式 AuthType Basic或Digest 指定认证组文件的位置 AuthGroupFile 指定认证口令文件的位置 AuthUserFile 指定摘需要认证的 URI(仅用于摘要认证) AuthDigestDomain URI URI ,2019年5月30日,17,授权,当使用认证指令配置了认证之后,还需要使用Require指令为指定的用户或组进行授权 Require指令的三种使用格式 授权给指定的一个或多个用户 Require user 用户名 用户名 授权给指定的一个或多个组 Require group 组名 组名 授权给认证口令文
9、件中的所有用户 Require valid-user,2019年5月30日,18,管理基本认证的口令文件 htpasswd 命令,添加一个认证用户的同时创建认证口令文件 # htpasswd -cm 向现存的口令文件中添加用户或修改已存在的用户的口令 # htpasswd -m 从认证口令文件中删除用户及其口令 # htpasswd -D ,2019年5月30日,19,-m 参数可以生成MD5算法的加密口令 -b 参数用于在命令行上直接指定用户名及其口令,而非交互模式,管理摘要认证的口令文件 htdigest 命令,添加一个认证用户的同时创建认证口令文件 # htdigest -c 向现存的口
10、令文件中添加用户或修改已存在的用户的口令 # htdigest ,2019年5月30日,20,没有提供从认证口令文件中删除指定用户及其口令的功能,需要直接编辑认证口令文件,管理认证组文件,Apache 支持认证组文件 Apache 没有提供创建认证组文件的命令 认证组文件只是一个文本文件,可以使用任何文本编辑器创建并修改 认证组文件中每一行的格式,2019年5月30日,21,组名:用户名 用户名 ,在认证组文件中指定的用户名,必须先使用 htpasswd 或 htdigest 命令添加到认证口令文件中,认证证书的权限,认证证书包扩认证口令文件和/或认证组文件 基于安全因素的考虑 认证证书不应该
11、存放在 DocumentRoot 指令指定的目录或其子目录下 建议存放在 /etc/httpd/passwd 子目录或与虚拟主机根文档目录同级别的conf或passwd子目录下 确保执行Apache守护进程的用户(CentOS默认为 apache)能读取认证证书 确保 apache 用户能进入存放认证证书的目录 确保 apache 用户能读取认证证书文件,2019年5月30日,22,认证和授权配置举例,在主配置文件中配置认证和授权在.htaccess文件中配置认证和授权,2019年5月30日,23,参考教材中的操作步骤,对访问控制和认证授权 进行控制,Satisfy all 主机访问控制和认证
12、授权两类指令均起作用(默认值) 例如:配置指定的用户在指定的网段上访问资源 Satisfy any 主机访问控制和认证授权两类指令只要一类指令满足条件即可以访问 例如:允许网段内用户无条件访问而其他用户授权访问,2019年5月30日,24,日志管理,2019年5月30日,25,Apache 的日志,日志的种类 错误日志 访问日志 Apache 默认的错误日志配置Apache 默认的访问日志配置,2019年5月30日,26,ErrorLog logs/error_log LogLevel warn,LogFormat “%h %l %u %t “%r“ %s %b “%Refereri“ “%U
13、ser-Agenti“ combined CustomLog logs/access_log combined,Apache的日志滚动,Apache的日志滚动的必要性 一个访问频繁的Web站点的日志会迅速增长 定期清理以免造成磁盘空间的不必要的浪费 查看日志时打开小文件的速度比大文件的速度要快 Apache的日志滚动方法 RHEL/CentOS的默认配置 logrotate 和 crond 实现日志滚动 其他工具 使用 Apache 自带的 rotatelogs 使用 cronolog(http:/cronolog.org/),2019年5月30日,27,配置虚拟主机的日志,若在虚拟主机的容器
14、之内没有配置日志指令,则每个虚拟主机将继承使用主配置文件中容器之外的日志配置。 分离虚拟主机日志的方法 在容器之内使用 ErrorLog 和 CustomLog 语句指定本虚拟主机单独使用的日志文件 使用主配置文件将所有虚拟主机的日志记录到一个文件,然后可以使用分离脚本 split-logfile 将日志文件的内容按不同的虚拟主机拆分为多个文件,2019年5月30日,28,虚拟主机的日志分离举例,2019年5月30日,29,参考教材中的操作步骤,本章思考题,什么是虚拟主机?Apache支持几种类型的虚拟主机? 简述认证和授权指令的使用。 Apache有哪几种日志?Apache的日志指令有哪些?
15、 如何配置Apache的虚拟主机日志?,2019年5月30日,30,本章实验,学会配置基于IP和基于域名的虚拟主机。 学会配置访问控制、认证和授权。 学会查看Apache的日志文件。 学会配置虚拟主机的分离日志及其日志滚动。,2019年5月30日,31,进一步学习,学习配置基于不同端口号的虚拟主机。 学习使用mod_rewrite模块配置虚拟主机的方法。 学习配置WebDAV实现站点内容上传。 学习使用cronolog(http:/cronolog.org/) 实现日志滚动。 学习使用vlogger(http:/n0rp.chemlab.org/vlogger/)实现虚拟主机的日志分离。 学习使用ab命令测试Apache服务器的性能。,2019年5月30日,32,