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