第6章 Web网站服务(二)

具体步骤:

客户机地址限制

通过配置项Order、Deny from、Allow from,可以根据客户机的主机名或IP地址来决定是否允许客户端访问。其中Order用于设置限制顺序,Deny from和Allow from用于设置具体限制内容。

使用Order配置项时,可以设置为“allow,deny”或“deny,allow”,以决定主机应用“允许”、“拒绝”策略的先后顺序。

 allow,deny:先允许后拒绝,默认拒绝所有未明确允许的客户机地址。

 deny,allow:先拒绝后允许,默认允许所有未明确拒绝的客户及地址。

使用Allow和Deny配置项时,需要设置客户机地址以构成完整的限制策略,地址的形式可以是IP地址、网络地址、主机名、域名,使用名称“all”时表示任意地址。限制格式策略的格式如下所示:

Allow  from  address1  address2  ……

Deny  from  address1  address2  ……

通常情况下,网站服务器是对所有客户机开放的,网页文档目录并未做任何限制,因此使用的是“Allow from all”的策略,表示允许从任何客户机访问。如图所示:

wKiom1XN5GeQP-rmAANVWMy1bjo866.bmp

需要使用“仅允许”的限制策略时,应将处理顺序改为“allow,deny”,并明确设置允许策略,只允许一部分主机访问。例如,若只希望IP地址为173.16.16.173的网管工作用机能够访问AWStats系统,则针对AWStats系统的目录区域应做如下的设置。

wKioL1XN5wWDXuyTAANESOHt-jM210.bmp 

需要使用“仅拒绝”的限制策略时,应将处理顺序改为“deny,allow”,并明确设置拒绝策略,只禁止一部分主机访问。例如,若只希望禁止来自两个内网网段192.168.0.0/24和192.168.1.0/24的主机访问,但允许其他任何主机访问,可以使用如下限制策略。

wKiom1XN5Q3gYCNsAANd4AiA06c302.bmp 

用户授权限制

httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证需要在编译httpd之前添加“enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证;而基本认证时httpd服务的基本功能,不需要预先配置特别的选项。

基于用户的访问控制包含认证和授权两个过程,认证(Authentication)是指识别用户身份的过程,授权(Authorization)是允许特定用户访问特定目录区域的过程。

1. 创建用户认证数据文件

httpd的基本认证通过校验用户名、密码组合来判断是否允许用户访问。授权访问的用户账户需要事先建立,并保存在固定的数据文件中。使用专门的htpasswd工具程序,可以创建授权用户数据文件,并维护其中的用户账号。

使用htpasswd工具时,必须指定用户数据文件的位置,添加“-c”选项表示新建立此文件。例如:执行以下操作可以新建数据文件/usr/local/httpd/conf/.awspwd,其中包含一个名为webadmin的用户信息。

wKiom1XN5SjCqO-DAAR1HIrHrJI673.bmp 

若省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码。例如,需要向.awspwd数据文件中添加一个新用户pengjie时,可以执行以下操作:

wKioL1XN50KSzU6WAAR7mGo6kIw965.bmp 

2. 添加用户授权配置

有了授权用户账号以后,还需要修改httpd.conf配置文件,在特定的目录区域中添加授权配置,以启用基本认证并设置允许哪些用户访问。如图所示:

spacer.gifwKiom1XN5UfxRoOaAAC88J_BshM257.bmp wKiom1XN5VSTR0ScAAT8pFJTq5g573.bmp

上述配置内容中,相关配置项的含义如下:

 AuthName:定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示。

 AuthType:设置认证的类型,Basic表示基本认证

 AuthUserFile:设置用于保存用户账号、密码的认证文件路径。

 require valid-user:要求只有认证文件中的合法用户才能访问。其中valid-user表示所有合法用户,若只授权给单个用户,可改为指定的用户名。

3. 验证用户访问权限

基本认证的登陆界面。如图所示:

wKioL1XN52bh8EUhAAXM2IwMIQY184.bmp

 

认证失败时将拒绝访问。如图所示:

wKioL1XN53jz4Cx0AAuLOPYO6Ks487.bmp


基于域名的虚拟主机

1. 为虚拟主机提供域名解析

搭建好DNS服务器

2. 为虚拟主机准备好网页文档

在/var/www/html/目录中创建两个子目录,分别作为两个网站的网站根目录,并分别编写测试网页文件。如图所示:

wKiom1XN5a-TskELAALtmO8vLGg179.bmp

3. 添加虚拟主机配置

在httpd服务器的主配置文件中,若要启用基于域名的虚拟Web主机,通常需要配置一下几个方面的内容。

 监听地址:使用NameVirtualHost配置项指定提供虚拟主机服务的IP地址,也就是进行域名查询时各虚拟Web主机的IP地址。

 虚拟主机区域:使用“<VirtualHost 监听地址>……</VirtualHost>”区域配置,为每一个虚拟Web主机建立独立的配置内容。其中至少应包括虚拟主机的网站名称、网页根目录的配置项;其他如管理邮箱、访问日志等更多配置项可根据实际需要添加。

 目录权限:使用“<Directory 目录位置>……</Directory>”区域配置,为每一个虚拟Web主机的网站目录设置访问权限,如允许任何人访问。目录方访问可以继承其父目录的授权许可,因此可以采取直接为父文件夹授权访问权限的方法来简化配置。

当虚拟Web主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在httpd.conf文件中通过Include加载这些配置。这样可以将对httpd.conf文件的改动减至最少,更方便配置内容的维护。

wKiom1XN5b6QOT6pAAFD0HtaJeY261.bmpwKioL1XN59HREROpAAMIkK9JtdU900.bmpwKiom1XN5d3gu9HoAAdb4F2sam4398.bmp 

wKioL1XN5_iDx_vuAAC88J_BshM185.bmpwKioL1XN6AnDLL81AAGEWAhS-7o900.bmp 

wKioL1XN6CiTnPkZAAFX-JlRl7o253.bmp

wKiom1XN5kviC7u1AAAxvO_Z-T0424.jpg 

spacer.gif名称虚拟主机只有在基于域名的虚拟主机时才启用呢!

4. 在客户机中访问虚拟Web主机

在客户机的浏览器中,使用网站名称分别访问不同的虚拟Web主机,确认能够看到不同的网页内容。如图所示:

wKioL1XN6HXwHCq3AAuLOLgJlHA902.bmpwKiom1XN5oLicyPVAAuLOPtR0KE574.bmp 

基于IP地址的虚拟主机

配置基于IP地址的虚拟Web主机时,不再使用NameVirtualHost配置项来指定监听服务的IP地址,而只要在每个虚拟Web主机的VirtualHost配置中指定各自域名所对应的IP地址。

具体步骤:

1. 为虚拟主机准备网页文档

wKioL1XN6LTh4LJNAAHpWDp9JEA699.bmp 

2. 编辑配置文件

wKioL1XN6MKz3VhvAAFD0HtaJeY465.bmp 

wKioL1XN6NHC2Bs1AAJjfPwb-AU134.bmpwKioL1XN6OKQMlcBAAUfOPejF8Y790.bmp 

wKioL1XN6Q7jzww7AAC88J_BshM452.bmp 

wKioL1XN6TDy6hKdAAGEWAhS-7o164.bmp 

基于端口的虚拟主机

配置基于端口的虚拟主机Web主机时,也不再需要使用NameVirtualHost配置项。而是通过多个Listen配置项来指定要监听的TCP端口号,每个虚拟Web主机的VirtualHost配置中应同时指定IP地址和端口号。

具体步骤:

wKioL1XN6UXzTq1_AADQWGdpHOk282.bmpwKioL1XN6VLi_c9yAAJoKEfNODY278.bmpwKiom1XN51qizsdLAAT6SP_y08Q616.bmp 

wKioL1XN6W6ws9-UAAC88J_BshM102.bmp 

wKiom1XN53SzaelsAAH56A9_6Uc880.bmp 

在客户机上访问,在域名后加上端口号。如图所示:

wKioL1XN6YnBRz8CAA2-zO86X3U565.bmpwKioL1XN6ZqB5s2LAA27-BTsHFY762.bmp 

补充:

1,在网站的根目录/usr/local/httpd/conf/httpd.conf中有

wKiom1XN556g7q_dAAG_lqe0RFc146.jpg 

Options[选项]   indexes[浏览]    followsymlinks [链接]三项中,在实际生产中是把indexes去掉【-indexes】。

2,优雅启动:/etc/init.d/httpd graceful

3,创建目录:mkdir -pv /web/{benet,accp}

wKioL1XN6bfgsQ2tAAB_dQSEB5s441.jpg 

4,准备网页:echo accp.com > /web/accp/index.html