怎么搭建虚拟Web主机
温馨提示:这篇文章已超过647天没有更新,请注意相关的内容是否还可用!
作用:
控制对网站资源的访问为特定的网站目录添加访问授权常用访问控制方式:
客户机地址限制用户授权限制1.客户机地址限制
使用Require配置项实现访问控制,按先后顺序限制,可以根据主机名或IP地址来决定是否允许客户端访问。在httpd服务器的主配置文件(/usr/local/httpd/conf/httpd.conf)的、、、配置段中均可以使用Require配置项来控制客户端的访问。使用Require配置项时,需要设置客户机地址以构成完整的限制策略,地址的形式可以是IP地址、网络地址、主机名或域名,使用“all”时表示任意地址。
Require配置项的常见语法
Require all granted:表示允许所有主机访问Require all denied:表示拒绝所有主机访问Require local:表示仅允许本地主机访问Require [not] host :表示允许或拒绝指定主机或域访问Require [not] ip :表示允许或拒绝指定IP地址或网段访问例如:只希望IP地址为192.168.1.100的主机能够访问/usr/local/httpd/htdocs网页目录下的内容。如下图:(修改完配置文件记得重启服务)
说一个比较绕的东西,就是在定义限制策略时,多个不带not的Require配置语句之间是或的关系,即任意一条Require配置语句满足条件均可以访问。若既出现了不带not的Require配置语句,又出现了带not的Require配置语句,则语句之间是与的关系,即同时满足所有Require配置语句才可以访问。
再举一个拒绝的例子,例如,只希望禁止来自192.168.0.0/24和192.168.1.0/24两个网段的主机访问,但允许其他任何主机访问。如下图:(修改完配置文件记得重启服务)
注意:在使用not禁止访问时要将其置于容器中,并在容器中指定相应的限制策略。
当未被授权的客户机访问网站目录时,将会被拒绝访问,不同的浏览器中,拒绝的消息可以略有差异,通常都是提示为403错误。如下图:
2.用户授权限制
包含认证(Authentication)和授权(Authorization)两个过程,认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程。
Httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证需要在编译httpd之前添加“--enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证,而基本认证是httpd服务的基本功能,不需要预先配置特别的选项。(以下都是以基本认证为例,对/usr/local/httpd/htdocs网页内容添加用户授权限制)
1)创建用户认证数据文件
Httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用户账号需要事先建立,并保存在固定的数据文件中。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。
使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文件。
示例:执行以下操作可以新建数据文件/usr/local/httpd/conf/.awspwd,其中包含一个名为webadmin的用户信息。
若省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。
2)添加用户授权配置
有了授权用户账号以后,还需要修改httpd.conf配置文件,在特定的目录区域中添加授权配置,以启用基本认证并设置哪些用户访问。
示例:只允许“.awspwd”数据文件中的用户访问网页。如下图:
上图所示配置项的含义如下:
AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示AuthType:设置认证类型,Basic表示基本认证AuthUserFile:设置用于保存用户账号、密码的认证文件路径Require valid-user:要求只有认证文件中的合法用户才能访问。其中,valid-user表示所有合法用户web服务器架设,若只授权给单个用户,可改为指定的用户名(如webadmin)。注意:用户访问授权与主机访问控制同时设置时,设置的主机访问控制优先生效。
3)验证用户访问授权
当再次访问网站的默认首页时,浏览器会首先弹出认证对话框。如下图所示,只有输入正确的用户名和密码才能查看网页,否则拒绝访问。
二、构建虚拟Web主机
什么是虚拟Web主机
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用整个服务器。其目的是为了充分利用服务器的硬件资源,提高资源的利用率。httpd支持的虚拟主机类型基于域名的虚拟主机:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的。这是使用最为普遍的虚拟Web主机类型基于IP地址的虚拟主机:为每个虚拟主机使用不同的域名,且各自对应不同的IP地址。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。基于端口的虚拟主机:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用了不同的TCP端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问,非常不方便用户的访问。在上述几种虚拟Web主机中,基于域名的虚拟主机是使用最为广泛的,所以我们接下来重点了解一下基于域名的虚拟主机。
1.基于域名的虚拟主机
下面以实现两个虚拟Web主机“”和“”为例,使用一台httpd服务器搭建,IP地址为192.168.1.1。具体构建过程如下。
1)为虚拟机提供域名解析
这里可以采用编辑/etc/hosts文件或者安装DNS服务器两种方式来实现。
编辑hosts文件很简单,就写两行对应的解析记录。如下图:
使用DNS服务器解析域名需要搭建DNS服务器,搭建DNS服务器的步骤前面有文章已经详细介绍过了,在这里就不赘述了(想了解的可以在作者的主页查找《Linux如何搭建DNS服务器》这篇文档)web服务器架设,这里我们只说一下配置文件的主要编辑内容。在主配置文件named.conf中添加test1.com和test2.com两个区域;然后在各区域数据文件中均设置“www-->192.168.1.1”的A记录。确认客户机能够正确解析和对应的IP地址。如下图:
2)为虚拟主机准备网页文档
为每个虚拟Web主机准备网站目录及网页文档。为了测试方便,分别为每个虚拟Web主机提供包含不同内容的首页文件。如下图:
3)添加虚拟主机配置
启用基于域名的虚拟Web主机,需要配置以下几个方面的内容:
虚拟主机区域:使用......区域配置文件,为每个虚拟Web主机建立独立的配置内容。其中至少应该包括虚拟主机的网站名称、网页根目录的配置项,其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。目录权限:使用......区域配置,为每个虚拟Web主机的网站目录设置访问权限,如允许任何人访问。目录访问可以继承其父目录的授权许可,因此可以采取直接为父目录授权访问权限的方法来简化配置。当虚拟Web主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在httpd.conf文件中通过Include加载这些配置。这样可以将对httpd.conf文件的改动减少至最少,更方便配置内容的维护。如下图:
4)测试——在客户机浏览器分别访问虚拟Web主机
确认能够看到不同的网页内容,如下图。
2.基于IP地址、基于端口的虚拟主机
基于IP地址或基于端口的虚拟主机的过程与基于域名的虚拟主机类似,也需要先提前提供域名解析、准备网页文档,再调整httpd配置、重启httpd服务,然后在客户机中访问虚拟主机进行测试。其中最主要的区别是,不同类型的虚拟主机在httpd.conf文件中的配置内容略有不同。
1)基于IP地址的虚拟主机
对于基于IP地址的虚拟主机,每个虚拟Web主机各自使用不同的IP地址,但都是通过同一台httpd服务器对外提供Web服务。所以,用来支撑这些虚拟web主机的服务器也就需要有大量的网络接口及IP地址,在实际应用中往往不太方便,因此应用不是太广泛。
配置基于IP地址的虚拟web主机时,需要在每个虚拟web主机的virtualHost配置项中指定各自域名所对应的IP地址。这里我们还是以test1.com和test2.com为例,配置区别如下图所示。
注意:需要事先添加网卡(网络接口),然后分别配置不同的IP,其他配置与基于域名的虚拟主机基本相同。
2)基于端口的虚拟主机
基于端口的虚拟主机通常指用于同一个Web站点,其针对的网站名称、IP地址往往是相同的,但通过不同的TCP端口来提供访问不同网页内容的服务入口。在浏览器中访问非80端口的Web服务时,需要指出服务器的端口号。如:httpd://网站名称:端口号
配置基于端口的虚拟web主机时,需要通过多个Listen配置项来指定要监听的TCP端口号,每个虚拟web主机的VirtualHost配置中需同时指定IP地址和端口号。如下图所示:
然后在/usr/local/httpd/conf/httpd.conf配置文件中指定端口,也可以在/usr/local/httpd/conf/extra/httpd-vhosts.conf文件中添加下面两行内容来指定端口(就是随便找个地方添加一下就行,别太随便)。
到这里,Apache网站服务器的搭建基本就完成了,完了就是各种关于服务器的优化问题了。关于优化,我后面找些文档给大家分享一下。
####### 本节完 #######