《组网技术》第09课1.教学目的:使学生掌握Linux环境下,熟练掌握Linux环境Apache服务器高级配置:基于名称和基于IP的虚拟主机;用户认证与用户授权。
掌握动态网站与LAMP环境的搭建。
2.教学内容:⑴Apache基于名称虚拟主机配置⑵Apache基于IP的虚拟主机配置⑶用户认证与用户授权访问网站⑷动态网站与LAMP环境的搭建过程3.内容难点:用户认证与用户授权4.学习要求:理解虚拟主机的概念。
网站(目录)的用户认证方法、用户授权概念,正确编辑Apache服务器的配置文件httpd.conf。
5.教学纲要一、虚拟主机概念和种类二、Apache基于名称虚拟主机配置三、Apache基于IP的虚拟主机配置四、Apache基于端口的虚拟主机配置五、用户认证与用户授权访问网站认证和授权应用举例_在Linux端配置认证和授权应用举例_Webmin操作六、动态网站与LAMP环境的搭建过程一、虚拟主机概念和种类虚拟主机是使用特殊的软硬件技术,把一台真实的物理电脑主机分割成多个的逻辑存储单元,每个单元都没有物理实体,但是每一个物理单元都能像真实的物理主机一样在网络上工作,具有单独的IP 地址(或共享的IP地址)以及完整的Internet服务器功能。
虚拟主机的关键技术在于,即使在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程式,也互不干扰。
而各个用户拥有自己的一部分系统资源(IP地址、文档存储空间、内存、CPU时间等)。
虚拟主机之间完全独立。
在外界看来,每一台虚拟主机和一台单独的主机的表现完全相同。
所以这种被虚拟化的逻辑主机被形象地称为“虚拟主机”。
一台服务器上的不同虚拟主机是各自独立的,并由用户自行管理。
但一台服务器主机只能够支持一定数量的虚拟主机,当超过这个数量时,用户将会感到性能急剧下降。
虚拟主机技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。
如果划分是系统级别的,则称为虚拟服务器。
虚拟主机技术主要有3种:基于名字的虚拟主机、基于IP的虚拟主机和基于端口的虚拟主机。
1、基于名字的虚拟主机基于名字的虚拟主机是根据客户端提交的HTTP 头中标识主机名的部分决定的。
因此多个虚拟主机可以共用同一个IP 地址来同时启用多个虚拟主机服务,虽然使用基于名字的虚拟主机可以缓解IP 不足的问题,但是需要设置DNS ,在DNS 中增加与虚拟主机名相对应的IP 地址。
另外,由于SSL 协议的一些特性决定了基于名字的虚拟主机无法成为SSL 服务器(及时配置之了SSL 也无法标记为安全的SSL 服务器)。
当Apsche 启动时,如果遇到NameVirtualHost 指令,会为NameVirtualHost 指令所指定的IP 建立一个虚拟主机地址表,而不是去监听这个地址,然后再遇到虚拟主机容器与时会判断该地址是否与之前建立的虚拟主机地址表相同,如果相同则将为该地址添加虚拟主机,这样每一个NameVirtualHost 指令中指定的IP 之地都会有一个完整的虚拟主机列表,当Apsche 收到请求时会自动搜索与此IP 对应的虚拟主机列表,然后根据虚拟主机容器中的配置来响应。
对于整个过程需要注意以下两点。
(1)机遇名字的虚拟主机会根据请求的HOST 头部信息来选择提供服务的虚拟主机。
(2)如果没有找到客户请求的虚拟主机(出现这种情况一般是客户浏览器不支持HTTP/1.1),则默认使用第一个在该IP 地址上定义的虚拟主机,即默认主机来响应。
如果使用基于名字的虚拟主机,那么首先需要通过NameVirtualHost 指令来制定服务器IP 地址,此IP地址必须是运行在Apsche服务器主机上的IP地址,当然也可以使用通配符“*”来制定所有的可用IP。
2、基于IP的虚拟主机就像它的名字"基于IP"所暗示的那样,这样的服务器中每个基于IP的虚拟主机必须拥有不同的IP地址。
可以通过配备多个真实的物理网络接口来达到这一要求,也可以使用几乎所有流行的操作系统都支持的虚拟界面来达到这一要求(详情请参见您的系统文档,这种功能一般被称作"IP别名",一般用"ifconfig"命令来进行设置)。
3、基于端口的虚拟主机基于名称的虚拟主机是根据客户端提交的HTTP头中标识主机名的部分决定的,基于IP的虚拟主机则是由IP地址决定网站,其默认访问端口均为80。
可以修改或增加端口号的方式创建不同的网站。
在Apache的主配置文档中,包含监听端口指令:listen 80,可以增加,例如,listen 8080后,再配置此端口相关的虚拟主机。
二、Apache基于名称虚拟主机配置基于名字的虚拟主机是根据客户端提交的HTTP头中标识主机名的部分决定的。
因而,必须在DNS服务器中创建了可以查询到域名名称。
一般地,一个域名名称映射到一个IP地址,不同的域名名称映射到不同的IP地址。
为了实现同一物理主机实体的同一IP地址上具有多个不同的名称,可以采用别名映射的方式。
基于名字的虚拟主机操作要点:要点ⅰ:在DND服务器上创建一个或多个主机别名(在客户端以Linux中的root用户)登录到Webmin界面,选择[服务器服务器DNS区域[]名称别名],参见图1。
点击名称别名后,在图2中新建主机别名,结果如图3所示。
图1 在Webmin中配置DNS服务器图2 新建主机别名图3 新增主机别名结果重新启动DNS 服务器,使新增结果生效。
要点ⅱ创建虚拟主机(以 为例)点击[服务器在图4中指定IP 地址和服务器名称,正确给定“根文件”的路径。
图4 新建虚拟主机根文件的路径如果不存在(security ),当单击“Creat Now ”后会自动新建该目录。
创建后的属有者为apache.apache ,“其他”用户的权限为"读取"。
新建2个虚拟主机后,在Apache 的首页界面会显现扼要信息,如图5所示。
在Apache 主配置文件中的指令如图6所示。
图5 虚拟主机创建结果图5 虚拟主机配置指令要点ⅲ:确保更新后重启Apache 及DNS 服务器。
确保访问权限可读取。
将虚拟主机所承载的网站的主页及其他文件上传到相应的目录(设法上传)。
注意上传后的文件的访问控制权限,特别是由FTP 上传过来的文件,很有可能是“其他”用户没有读取权。
测试情况参考图6。
图5 用域名访问虚拟主机Array三、Apache基于IP的虚拟主机配置基于IP 的虚拟主机操作要点:要点ⅰ:在Linux系统中配置多个IP地址多IP地址有2种:系统中安装并配置了多个网卡或只有一块网卡。
多个网卡自然可以配置多个不同的网络服务,此处不展开。
单一网卡要配置多个IP地址,又分为临时多IP和永久多IP。
临时配置多个IP地址可以使用下面的命令来实现,但当重新启动Linux系统后,IP地址无效。
ifconfig eth0:1 192.168.1.23 netmask 255.255.255.0单一网卡配置多个IP地址方法:方法1:在Linux系统中操作进入到/etc/sysconfig/network-scripts/目录,复制该目录下名为 ifcfg-eth0的文件,粘贴后重命名为ifcfg-eth0:1。
建议用 kwrite 或gedit打开ifcfg-eth0:1文件进行编辑修改。
只要将原来的IP地址(192.168.1.31)改为192.168.1.67,其他内容保留不变即可。
方法2:在Webmin中操作进入Webmin后,点击[网络配置网络接口],如图6所示。
图6 网络接口配置在图6中点击真实设备名eth0,在新界面图7中“添加虚拟接口”。
图7 编辑引导时网络接口点击图7“编辑引导时接口”界面下方的“增加虚拟接口”,并在IPv4 address/static configuration的地址框中输入新IP地址,例如192.168.1.23,参见图8。
记住,此后要点击“新建”命令。
不要选择“Create and Apply ”命令,否则无法再操作 Webmin 。
返回到图9的“网络配置”界面,点击“Apply Configuration ”。
图8 创建引导时接口(虚拟接口参数)图9 网络配置IP 地址配置之后(建议在局域网中使用同网段的IP 地址),需要重新引导系统(重启动Linux ),在客户端可以进行Ping 检验。
要点ⅱ:配置基于IP 虚拟主机 (在客户端以Linux 中的root 用户)登录到Webmin 界面,选择[服务器ApacheCreate virtual host ],配置静态IP地址和根文件路径,最后点击“Create Now”,参见图10。
根据所配置IP地址的个数,可以配置多个基于IP的虚拟主机。
参见图11。
如果不在Webmin环境中配置,也可直接在主配置文件中编辑编辑,内容如图12所示。
图10 配置虚拟主机图11 多个基于IP的虚拟主机图12 配置虚拟主机要点ⅲ:确保更新后重启Apache 服务器,确保访问权限可读取。
上传虚拟主机的网站文件后,可以在客户端检验了。
参见图13。
图12 访问虚拟主机网站四、Apache 基于端口的虚拟主机配置基于端口的虚拟主机配置一般是只有一块网卡,也没有配置多个IP 地址,域名别名是否多个也不限,只要在唯一IP 地址后指定一个非默认(80)的端口号(常见用8080等),这个端口号不要与其他应用发生冲突即可。
其他与基于名称或基于IP 虚拟主机配置类同。
五、用户认证与用户授权访问网站有时候,我们会有这样一个需求,就是需要让一些文件经过用户账号密码认证后才能进行访问,并且限定某些站点只有固定的用户才能登陆,故需要在Apache中进行用户认证。
用户认证就是验证用户身份的真实性,如用户账号是否在数据库中,及用户账号所对应的密码是否正确。
用户授权表示检验有效用户是否被许可访问特定的资源。
在Apache中,几乎所有的安全模块实际上兼顾了这两个方面。
从安全的角度来看,用户认证和授权相当于选择性访问控制。
在apache服务中进行用户认证的作用和目的是:如果对于安全性要求高的网站(或网页)应该限制未被认证或未被授权的用户使用,只能允许被认证并被授权的用户使用。
可以利用容器Directory(或Files或与用户授权。
建立用户的认证授权需要三个步骤:1、建立用户库用户名和口令列表需要存在于文件(mod_auth模块)或数据库(mod_auth_dbm模块)中。
基于安全的原因,该文件不能存放在文挡的根目录下。