第32讲 Apache 深入应用(Lab9) 1.实验目的 2.实验任务与要求 3.实验工具和方法 4.实验步骤 5. 实验思考题
1.实验目的 Apache的访问认证: 了解和掌握Apache服务器的发布目录下,设置访问“禁区”的基本方法,以保护Web服务器中的敏感数据和资源
Apache访问认证的概念 不少读者在访问一些网站的某些资源时,浏览器弹出一个对话框,要求输入用户名和密码来获取对资源的访问,这就是Web服务器要求用户进行认证的一种形式 Web用户认证控制着所有登录并检查访问用户的合法性,其目的是仅让合法用户以合法的权限访问网络系统的资源 基本的用户认证技术是“用户名+密码”,是服务器级认证技术
Web访问认证的应用场景 例如,在Apache Friends的环境中,phpmyadmin是一个重要的数据库的Web客户端,具有数据库管理员的访问权限,对网站数据库具有重大影响 不能允许非授权用户进行访问 Web访问认证可以控制对phpmyadmin的访问,只有通过认证的用户可以进入
2.实验任务与要求 企业应用的一个重要特点是对用户访问进行限制,一个网站除了向公众提供信息外,也会向内部人员提供信息专区,这往往需要对客户进行认证 在web应用中,对用户进行认证的方式有许多种,包括Web服务器级的认证,Web应用程序级的认证和SSL证书认证等 本实验结合Apache介绍Web服务器级认证
3.实验工具和方法 基本环境设置: 控制对象 Windows XP, Apache Friends 1.0 安装在c:\xampp下 Apache Friends中的phpmyadmin目录(MySQL数据库的管理界面)
实验工具和环境介绍(1) Apache是一种Web服务器,可运行在Linux、Windows等操作系统下,Apache用户认证所需要的用户名和密码有两种不同的存贮方式: 文本文件 MSQL、Oracle、MySQL等数据库 要启动Apache认证功能,系统管理员须在限制访问的目录下建立.htaccess(在Windows下用htaccess)文件 在Apache的配置文件(httpd.conf)中设置相应的认证命令
实验工具和环境介绍(2) 当网络用户首次访问该目录的某个文件时,浏览器会弹出一个对话框,要求输入用户名和密码,进行用户身份的确认 若是合法用户,则显示所访问的页面内容,此后访问该目录的每个页面,浏览器自动送出用户名和密码,不用重复输入,直到关闭浏览器为止 这里以文本文件储存用户密码信息形式为例,说明配置Apache用户认证的基本过程
4.实验步骤 1、对Apache配置文件 httpd.conf进行两处修改 第一处内容为: allowoverride authconfig 表示允许对/xampp/phpmyadmin目录下的文件进行用户认证 第二处修改内容,因为是在Windows下进行实验,所以需要把: AccessFileName .htaccess 改为: AccessFileName htaccess
建立htaccess文件 2、在限制访问的目录/xampp/phpmyadmin下,建立一个名为htaccess的文件,其内容如下 : AuthName "Database" AuthType basic AuthUserFile /xampp/phpmyadmin/doglookgate Require valid-user
htaccess中常用的配置命令 AuthName:指定认证区域名称,显示在认证的对话框中提示用户 AuthType:指定认证类型。在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几种认证类型,如:MD5 AuthUserFile:指定一个包含用户名和密码的文本文件,每行一对 AuthGroupFile:指定包含用户组清单和这些组的成员清单的文本文件。组的成员之间用空格分开,如: managers:user1 user2 require:指定哪些用户或组才能被授权访问 如:require user user1 user2 (只有用户user1和user2可以访问)
生成htpasswd文件 3、利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文件: 例如: /xampp/phpmyadmin/doglookgate 文件中每行内容格式为“用户名:密码” 例如: htpasswd -bc doglookgate user1 1234 htpasswd -b doglookgate user2 5678 以上命令生成两个可认证用户,doglookgate文件中的内容为: user1:$apr1$V6......$AjSnsqC.KicD5RY.PJgqy1 user2:$apr1$B8......$xqjCVP9pJq/LpHmIZb7wb
注意事项 生成用户密码的htpasswd.exe在/xampp/apache/bin下,必须进入DOS状态进行操作 读者在做实验时,需要把生成的用户密码文件(doglookgate),转移到/xampp/phpmyadmin/下,以便与htaccess文件的配置对应
访问认证测试 用户访问Apache Friends测试页面时,浏览会弹出用户认证对话框 用户输入正确的用户名和口令,就可以访问到Apache Friends的数据库操作界面(phpmyadmin),否则将被拒之门外
Apache的主要参数说明 Web服务的基本配置 个人目录 创建虚拟目录 设置目录权限 用户认证 虚拟主机配置 页面重定向 以下说明,均以Xampp作为实例进行介绍
默认的配置文件信息 主配置文件:\xampp\apache\conf\httpd.conf 服务器的根目录(ServerRoot):\xampp\apache 根文档目录(DocumentRoot):\xampp\htdocs 访问日志文件:\xampp\apache\logs\access.log 错误日志文件: \xampp\apache\logs\error.log 模块存放路径:\xampp\apache\modules
httpd.conf文件的格式 httpd.conf配置文件主要由全局环境、主服务器配置和虚拟主机3个部分组成 配置语句的语法格式: 配置参数名称 参数值
Web服务的基本配置(1) 主目录的路径(DocumentRoot) 默认文档 默认位置:"D:/xampp/htdocs" 可以将需要发布的网页放在这个目录下 默认文档 在浏览器中,输入Web站点的IP地址或域名即显示出来的Web页面 DirectoryIndex index.html index.htm index.php index.html.var
Web服务的基本配置(2) 配置Apache监听的IP地址和端口号 Listen 80(在本机所有可用IP地址上监听TCP 80端口)
Web服务的基本配置(3) 设置相对根目录路径 相对根目录通常是Apache存放配置文件、日志文件、模块文件等的地方 它一般包含conf和logs子目录 ServerRoot "D:/xampp/apache"
Web服务的基本配置(4) 设置日志文件 错误日志 ErrorLog logs/error.log(位于目录D:/xampp/apache) 访问日志 CustomLog logs/access.log common
Web服务的基本配置(5) 设置网络管理员的Email地址 设置Apache服务器自身的主机名 设置默认字符集 ServerAdmin web@myctec.com 设置Apache服务器自身的主机名 ServerName 202.117.35.70:80 设置默认字符集 AddDefaultCharset GB2312
虚拟主机配置 虚拟主机的优点 基于IP的地址的虚拟主机 基于域名的虚拟主机
虚拟主机的优点 节约投资, 提高投资回报 节约维护费用 减少能源的浪费 拥有更加稳定的性能
基于IP的地址的虚拟主机 在服务器网卡上绑定多个IP地址,然后配置Apache,把多个网站绑定到不同的IP上
基于IP地址虚拟主机配置(1) 例子: <VirtualHost 202.117.58.132> ServerName 202.117. 58.132 :80 ServerAdmin web@ctec.xjtu.edu.cn DocumentRoot “/xampp/htdocs/web1” DirectoryIndex index.html ErrorLog logs/web1/error.log CustomLog logs/web1/access.log combined </VirtualHost>
基于IP地址虚拟主机配置(2) 例子: <VirtualHost 202.117.58.133> ServerName 202.117. 58.133 :80 ServerAdmin web@ctec.xjtu.edu.cn DocumentRoot “/xampp/phpmyadmin” DirectoryIndex index.php ErrorLog logs/web2/error.log CustomLog logs/web2/access.log combined </VirtualHost>
基于域名的虚拟主机(场景) Apache服务器的IP地址为: 现需要使用域名 202.117.58.128 所在的域为 myctec.com abc.myctec.com xyz.myctec.com 分别建立两台虚拟主机,每台虚拟主机都对应不同的主目录
DNS服务器的设置 在域mycorp.com的DNS服务器的正向解析文件mycorp.com.zone中添加如下A资源记录 abc IN A 202.117.58.128 xyz IN A 202.117.58.128 也可以在上述文件的最后直接添加如下的泛域名解析资源记录 *.myctec.com. IN A 202.117.58.128
基于域名的虚拟主机(2) 创建相应的documentroot目录 在Apache的主配置文件httpd.conf中,添加如下语句: md d:\xampp\htdocs\web1 md d:\xampp\htdocs\web2 在Apache的主配置文件httpd.conf中,添加如下语句:
abc.myctec.com的配置 NameVirtualHost 202.117.58.128 <VirtualHost abc.myctec.com> #虚拟主机abc.mycorp.com ServerName abc.myctec.com:80 ServerAdmin web@ctec.xjtu.edu.cn DocumentRoot “/xampp/htdocs/web1” DirectoryIndex index.html ErrorLog logs/web1/error.log CustomLog logs/web1/access.log combined </VirtualHost>
xyz.myctec.com的配置 <VirtualHost xyz.mycorp.com> #虚拟主机xyz.mycorp.com ServerName xyz.mycorp.com:80 ServerAdmin web@ctec.xjtu.edu.cn DocumentRoot “/xampp/htdocs/web2” DirectoryIndex index.html ErrorLog logs/web2/error.log CustomLog logs/web2/access.log combined </VirtualHost>
基于域名的虚拟主机其他工作 创建相应的log目录 创建响应的主页 在浏览器中测试 md D:\xampp\apache\logs\web1 echo “web1’s main page” > D:\xampp\apache\logs\web1 echo “web2’s main page” > D:\xampp\apache\logs\web2 在浏览器中测试
基于域名的虚拟主机注意事项 如果在浏览器中输入原有的地址www.myctec.com,将解析abc.myctec.com的主页 因为设置虚拟主机后,Apache将按虚拟主机的域名来解析浏览器中输入的域名地址,并且第一个虚拟主机的优先级最高,而www.myctec.com不匹配两个虚拟主机的地址,因此将按第一个虚拟主机解析 如果仍然需要按正常的方式解析www.myctec.com,那么需要为它建立一个新的虚拟主机
页面重定向 当站点的结构更新后,为了方便用户继续使用原来的URL访问,需要使用页面重定向 使用Redirect指令配置页面重定向 语法: Redirect [错误响应代码] 用户请求的URL [重定向的URL]
页面重定向举例 当月的新闻存放在news目录下的子文件夹中,如6月的新闻存放在news/jun目录下 当六月过去后,管理员将jun目录移动到old-news目录下 在文件httpd.conf中添加如下语句将访问news/jun的URL重定向到old-news Redirect 303 /news/jun http://202.117.35.70/old-news/jun
页面重定向时的错误响应代码 代码 说明 301 告诉用户,请求的URL已经永久地移动到新的URL,用户可以记住新的URL 302 303 告诉用户,页面已经被替换,用户应该记住新的URL 410 告诉用户,请求的页面已经不存在。使用此代码时,不应该使用重定向的URL参数
实验思考题 Apache的认证与操作系统、Web应用系统、MySQL服务器的认证有什么相同点和不同点? 虚拟主机有哪些实现方式?
思考题参考答案(1) Apache的认证与操作系统、Web应用系统、MySQL服务器的认证有什么相同点和不同点? 操作系统级的认证是系统管理员的最初级的认证,一般只有进入操作系统,才可以对服务器和系统进行操作,具有重大影响。
思考题参考答案(2) 虚拟主机有哪些实现方式? 基于IP地址(不同IP地址影射同一主机上上的不同Web目录中的内容)
思考题参考答案(3) 猜想Apache如何实现基于域名的虚拟主机? 这个问题不简单,因为HTTP报文的请求行中,只有所需访问内容部分URL(不包括IP地址或域名信息) Apache对基于域名的虚拟主机的访问实现在于对请求报文首部内容的分析,请看下图中:
基于域名虚拟主机的访问实现 注意:referer: 的内容,实际上是这个信息报告给apache, 客户端要求的域名或IP地址
本讲到此结束 下一讲,我们将讨论MySQL的深入应用