Apache 全攻略 --Apache 2.0 --Redhat 9.0

来源:百度文库 编辑:神马文学网 时间:2024/04/28 15:50:11
apache 全攻略
作者: josonchen   发表日期: 2006-10-03 01:51
操作步骤 1   安装 Apache 2.0
//查看是否安装了 Apache
# rpm -qa|grep httpd
//将 Red Hat Linux 9 的第 1 张安装光盘放入光驱后挂装
# mount /mnt/cdrom
//进入光盘的 Red Hat/RPMS 目录
# cd /mnt/cdrom/Red Hat/RPMS
//安装所需的 RPM 包
# rpm –ivh httpd-2.0.40-21.i386.rpm
# rpm -ivh httpd-manual-2.0.40-21.i386.rpm
//弹出光盘
# cd;eject
操作步骤 2     启动并检验 Apache 是否被运行
// 立即启动
# service httpd start
//下面的操作用于检验 httpd 是否被启动
# pstree|grep httpd
|- httpd---8*[httpd]   //表示已经启动
#
//可以使用下面的命令检测配置文件语法的正确性
# apachectl configtest
httpd: Could not determine the server‘s fully qualified domain name,
using 127.0.0.1 for ServerName
Syntax OK
注意:检测配置文件语法时,还可以使用下面的命令:
# httpd -t
//可以使用如下命令查看运行状态
# service httpd status
httpd (pid 2759 2758 2757 2756 2755 2754 2753 2752 2749) 正在运行...
#
操作步骤 3     查看 Apache 在 Red Hat 9 中的默认配置
//查看配置文件
# grep -v "#" /etc/httpd/conf/httpd.conf
//当服务器响应主机头(header)信息时显示 Apache 的版本和操作系统名称
ServerTokens OS
//设置服务器的根目录
ServerRoot "/etc/httpd"
//设置运行 Apache 时使用的 PidFile 的路径
PidFile run/httpd.pid
//若 300 秒后没有收到或送出任何数据就切断该连接
Timeout 300
//不使用保持连接的功能,即客户一次请求连接只能响应一个文件
/建议用户将此参数的值设置为 On,即允许使用保持连接的功能
KeepAlive Off
//在使用保持连接功能时,设置客户一次请求连接能响应文件的最大上限
MaxKeepAliveRequests 100
//在使用保持连接功能时,两个相邻的连接的时间间隔超过 15 秒,就切断连接
KeepAliveTimeout 15
//设置使用 prefork MPM 运行方式的参数,此运行方式是 Red Hat 默认的方式

//设置服务器启动时运行的进程数
StartServers     8
//Apache 在运行时会根据负载的轻重自动调整空闲子进程的数目,
//若存在低于 5 个空闲子进程,就创建一个新的子进程准备为客户提供服务
MinSpareServers   5
//若存在高于 20 个空闲子进程,就创建逐一删除子进程来提高系统性能
MaxSpareServers 20
//限制同一时间的连接数不能超过 150
MaxClients     150
//限制每个子进程在结束处理请求之前能处理的连接请求为 1000
MaxRequestsPerChild 1000

//设置使用 worker MPM 运行方式的参数

…………

//设置使用 perchild MPM 运行方式的参数

…………

//设置服务器的监听端口
Listen 80
//将/etc/httpd/conf.d 目录下的所有以 conf 结尾的配置文件包含进来
Include conf.d/*.conf
//动态加载模块(DSO)
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
………………………………
LoadModule proxy_connect_module modules/mod_proxy_connect.so
//当使用内置模块 prefork.c 时动态加载 cgi_module

LoadModule cgi_module modules/mod_cgi.so

//当使用内置模块 worker.c 时动态加载 cgid_module

LoadModule cgid_module modules/mod_cgid.so

//设置运行 Apache 服务器的用户和组
User apache
Group apache
//设置 Apache 服务器管理员的 E-mail 地址
ServerAdmin root@localhost
//关闭此选项,当 Apache 服务器需要指向本身的连接时使用
//ServerName:Port 作为主机名,例如www.jamond.net:80
//若打开此选项将使用www.jamond.net port 80 作为主机名
UseCanonicalName Off
//设置根文档路径
DocumentRoot "/var/www/html"
//设置 Apache 服务器根的访问权限

//允许符号链接跟随,访问不在本目录下的文件
Options FollowSymLinks
//禁止读取.htaccess 配置文件的内容
AllowOverride None

//设置根文档目录的访问权限

//Indexes:当在目录中找不到 DirectoryIndex 列表中指定的文件
就生成当前目录的文件列表
//FollowSymLinks:允许符号链接跟随,访问不在本目录下的文件
Options Indexes FollowSymLinks
//禁止读取.htaccess 配置文件的内容
AllowOverride None
//指定先执行 Allow(允许)访问规则,再执行 Deny(拒绝)访问规则
Order allow,deny
//设置 Allow(允许)访问规则,允许所有连接
Allow from all

//对 Apache 服务器根的访问不生成目录列表,同时指定错误输出页面

Options -Indexes
ErrorDocument 403 /error/noindex.html

//不允许每用户的服务器配置

UserDir disable

//当访问服务器时,依次查找页面 index.html、index.html.var
DirectoryIndex index.html index.html.var
//指定保护目录配置文件的名称
AccessFileName .htaccess
//拒绝访问以.ht 开头的文件,即保证.htaccess 不被访问

Order allow,deny
Deny from all

//指定负责处理 MIME 对应格式的配置文件的存放位置
TypesConfig /etc/mime.types
//指定默认的 MIME 文件类型为纯文本或 HTML 文件
DefaultType text/plain
//当 mod_mime_magic.c 模块被加载时,指定 Magic 信息码配置文件的存放位置

MIMEMagicFile conf/magic

//只记录连接 Apache 服务器的 IP 地址,而不记录主机名
HostnameLookups Off
//指定错误日志存放位置
ErrorLog logs/error_log
//指定记录的错误信息的详细等级为 warn 级别
LogLevel warn
//定义四种记录日志的格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
//指定访问日志的记录格式为 combined(混合型),并指定访问日志存放位置
CustomLog logs/access_log combined
//设置 Apache 自己产生的页面中使用 Apache 服务器版本的签名
ServerSignature On
//设置内容协商目录的访问别名
Alias /icons/ "/var/www/icons/"
//设置/var/www/icons 目录的访问权限

// MultiViews:使用内容协商功能决定被发送的网页的性质
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all

//设置 Apche 手册的访问别名
Alias /manual "/var/www/manual"
//设置/var/www/manual 目录的访问权限

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all

//指定 DAV 加锁数据库文件的存放位置

DAVLockDB /var/lib/dav/lockdb

//设置 CGI 目录的访问别名
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
//由于 Red Hat 中不使用 worker MPM 运行方式,所以不加载 mod_cgid.c 模块

Scriptsock       run/httpd.cgid

//设置 CGI 目录的访问权限

AllowOverride None
Options None
Order allow,deny
Allow from all

//设置自动生成目录列表的显示方式
// FancyIndexing:对每种类型的文件前加上一个小图标以示区别
// VersionSort:对同一个软件的多个版本进行排序
// NameWidth=*:文件名子段自动适应当前目录下最长文件名
IndexOptions FancyIndexing VersionSort NameWidth=*
//当使用 IndexOptions FancyIndexing 之后,配置下面的参数,
//用于告知服务器在遇到不同的文件类型或扩展名时采用 MIME 编码格式
//辨别文件类型并显示相应的图标
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
//当使用 IndexOptions FancyIndexing 之后,配置下面的参数,
//用于告知服务器在遇到不同的文件类型或扩展名时采用所指定的格式
//并显示所对应的图标
AddIcon /icons/binary.gif .bin .exe
………………
AddIcon /icons/blank.gif ^^BLANKICON^^
//当使用 IndexOptions FancyIndexing 之后,且无法识别文件类型时
//显示此处定义的图标
DefaultIcon /icons/unknown.gif
//当服务器自动列出目录列表时,在所生成的页面之后显示 README.html 的内容
ReadmeName README.html
//当服务器自动列出目录列表时,在所生成的页面之前显示 HEADER.html 的内容
HeaderName HEADER.html
//设置在线浏览用户可以实时解压缩.Z .gz .tgz 类型的文件
//并非所有浏览器都支持
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
//设置网页内容的语言种类(浏览器要启用内容协商)
//对中文网页,此项无实际意义
AddLanguage da .dk
…………
AddLanguage hr .hr
//当启用内容协商时,设置语言的先后顺序
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
// Prefer:当有多种语言可以匹配时,使用 LanguagePriority 列表的第 1 项
// Fallback:当没有语言可以匹配时,使用 LanguagePriority 列表的第 1 项
ForceLanguagePriority Prefer Fallback
//设置默认字符集
AddDefaultCharset ISO-8859-1
//设置各种字符集
AddCharset ISO-8859-1 .iso8859-1 .latin1
……………………
AddCharset shift_jis .sjis
//添加新的 MIME 类型(避免用户编辑/etc/mime.types)
AddType application/x-tar .tgz
//设置 Apache 对某些扩展名的处理方式
AddHandler imap-file map
AddHandler type-map var
//使用过滤器执行 SSI
AddOutputFilter INCLUDES .shtml
//设置错误页面目录的别名
Alias /error/ "/var/www/error/"
//设置/var/www/error 目录的访问权限



AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback

//设置错误输出页面
ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
………………
ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var


//设置浏览器匹配
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch   "Microsoft Data   Access Internet Publishing   Provider"
redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
#
重点
下面将 Red Hat 9 的 Apache 的默认重要配置信息汇总如下:
配置文件:/etc/httpd/conf/httpd.conf
服务器的根目录: /etc/httpd
根文档目录: /var/www/html
访问日志文件:/var/log/httpd/access_log
错误日志文件:/var/log/httpd/error_log
运行 Apache 的用户:apache
运行 Apache 的组: apache
端口:80
模块存放路径:/usr/lib/httpd/modules
prefork MPM 运行方式的参数:
StartServers 8
MinSpareServers 5
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 1000
操作步骤 4       配置 Apache
默认配置为用户提供了一个良好的模板。基本的配置几乎不需要进行修改。但用户应
该考虑修改或添加如下的基本配置指令。
1.KeepAlive
将 KeepAlive 的值设为 On,以便提高访问性能。
2.MaxClients
根据服务容量修改此值。
3.ServerAdmin
将 ServerAdmin 的值设为 Apache 服务器管理员的 E-mail 地址。
4.ServerName
首先删除 ServerName 前的注释符号“#”   ,然后设置服务器的 FQDN。
5.DirectoryIndex
在此指令后添加其他的默认主页文件名,例如可以添加 index.htm 等。
6.IndexOptions
可以在此指令后添加 FoldersFirst 表示让目录列在前面(类似于资源管理器)   。
分割配置任务
1.使用 Include 指令
可以使用 Include 指令将主配置文件进行分割。例如可以将所有与虚拟主机配置相关的
配置单独存成一个配置文件,然后在主配置文件中将其包含进来。
在 Red Hat Linux 9 的默认配置中,就包含了一个 Include 指令 Include conf.d/*.conf,用
于将/etc/httpd/conf.d 目录下的所有以 conf 结尾的配置文件包含进来。
2.使用.htaccess 文件
可以使用.htaccess 文件改变主配置文件中的配置,但是它只能设置对目录的访问控制,
这个目录就是.htaccess 文件存放的目录。与使用 Include 指令不同,.htaccess 文件中的配置
可以覆盖主配置文件中的配置,而使用 Include 指令只是将子配置文件简单的包含进主配置
文件之中。
(1)何时使用.htaccess 文件。有如下两种情况需要使用.htaccess 文件:
Ø 在多个用户之间分割配置。
Ø 想在不重新启动服务器的情况下改变服务器配置。
在可能的情况下尽量避免使用.htaccess 文件,因为使用.htaccess 文件会降低
服务器的运行性能。
提示
(2)要使用.htaccess 文件必须经过两个配置步骤:
Ø 首先在主配置文件中启用并控制对.htaccess 文件的使用。
Ø 然后在需要覆盖主配置文件的目录下生成.htaccess 文件。
3.启用并控制使用.htaccess 文件
(1)设置文件名称。必须保证在主配置文件中包含如下的配置语句:
AccessFileName .htaccess

Order allow,deny
Deny from all

(2)控制在.htaccess 文件中可以使用的指令组。要控制在.htaccess 文件中可以使用的
指令组,需要在主配置文件中使用 AllowOverride 指令。
以下列出了可以在 AllowOverride表
指令所使用的指令组。
AllowOverride 指令所使用的指令组
指令组               可   用   指   令                   说 明
AuthConfig   AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, 进行认证、授权以及安全的相
AuthName, AuthType, AuthUserFile, Require                                               关指令
FileInfo     DefaultType, ErrorDocument, ForceType,         控制文件处理方式的相关指令
LanguagePriority,SetHandler, SetInputFilter,
SetOutputFilter
Indexes   AddDescription, AddIcon, AddIconByEncoding,       控制目录列表方式的相关指令
AddIconByType, DefaultIcon, DirectoryIndex,
FancyIndexing, HeaderName,IndexIgnore,
IndexOptions, ReadmeName
Limit     Allow,Deny,Order                       进行目录访问控制的相关指令
Options   Options, XBitHack                   启用不能在主配置文件中使用的各种选项
All     全部指令组                             可以使用以上所有指令
None       禁止使用所有                         禁止处理.htaccess 文件
4.生成.htaccess 文件
当在主配置文件中配置了对.htaccess 文件的启用和控制之后,接下来就可以在需要覆
盖主配置文件的目录下生成.htaccess 文件。.htaccess 文件中可以使用的配置指令取决于主
配置文件中 AllowOverride 指令的设置。
下面举一个简单的例子说明.htaccess 文件的使用。
//首先在文档根目录下生成一个 private 目录,并创建测试文件
# cd /var/www/html
# mkdir private
# cd private
# touch test
//修改配置前,在客户浏览器查看结果,可以见到进入了列表模式目录
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//添加如下配置语句

AllowOverride Options

#
//重新启动 httpd
# service httpd restart
//在/var/www/html/private 目录下生成.htaccess 文件
# vi /var/www/html/private/.htaccess
//添加如下配置语句
Options –Indexes
#
//在客户浏览器中查看结果, 可以看到是不允许访问的页面出现
//通过查看配置结果,可以证明.htaccess 已经生效。即对 private 目录
//的访问不生成文件列表
注意
在上面的例子中,是先重新启动了 Apache 服务器,然后才生成.htaccess 文
件。也就是说,对.htaccess 文件的修改不用重新启动服务器即可生效。
配置每个用户的 Web 站点
1.配置步骤
配置每个用户的 Web 站点的意图是使在安装了 Apache 的本地计算机上,拥有用户账
号的每个用户都能够架设自己单独的 Web 站点。
要配置每个用户的 Web 站点,要经过下面的配置步骤:
Ø 修改主配置文件启用每个用户的 Web 站点配置。
Ø 修改主配置文件为每个用户的 Web 站点目录配置访问控制。
下面举例说明配置步骤。
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//修改如下部分的配置

//基于安全考虑,禁止 root 用户使用自己的个人站点
UserDir disable root
//配置对每个用户 Web 站点目录的设置
UserDir public_html

//设置每个用户 Web 站点目录的访问权限,将下面配置行前的“#”去掉

AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

Order allow,deny
Allow from all


Order deny,allow
Deny from all


//重新启动 httpd
# service httpd restart
下面说明每个用户要创建自己的 Web 站点,需要执行的步骤。以 osmond 用户为例,
想要创建自己的 Web 站点的每个用户都要执行下面的步骤。
//查看当前用户
$ whoami
osmond
//回到自家目录的根
$ cd
//创建目录 public_html
$ mkdir public_html
//修改 osmond 目录的权限
$ cd ..
$ chmod 711 osmond
//创建 index.html
$ cd ~/public_html/
$ vi index.html
//显示 index.html 的内容
$ cat index.html
Osmond‘s Web Site.
//使用客户浏览器访问自己的主页,是否已经看到你的网页啦。哈哈。。
提示
(1)上例中直接用 vi 编辑了一个 index.html 文件用于测试。实际应该使用
ftp 或 DAV 方式上传文件。
(2)使用浏览器访问自己的主页时,使用下面格式的 URL:
http://IP 地址或 FQDN/~用户名
若主机的 IP 地址为 192.168.1.100,用户名为 osmond,URL 为
http://192.168.1.100/~osmond。
1.访问控制的配置指令
Apache 使用下面的 3 个指令配置访问控制:
Ø Order:用于指定执行允许访问规则和执行拒绝访问规则的先后顺序。
Ø Deny:定义拒绝访问列表。
Ø Allow:定义允许访问列表。
(1)Order。Order 指令有两种形式:
Ø Order Allow,Deny:在执行拒绝访问规则之前先执行允许访问规则,默认情况下将
会拒绝所有没有明确被允许的客户。
Ø Order Deny,Allow:在执行允许访问规则之前先执行拒绝访问规则,默认情况下将
会允许所有没有明确被拒绝的客户。
注意     在书写 Allow,Deny 和 Deny,Allow 时,中间不能添加空格字符。
(2)Deny 和 Allow。Deny 和 Allow 指令的后面需要跟访问列表,访问列表可以使用
如下的几种形式:
Ø All:表示所有客户。
Ø 域名:表示域内的所有客户,如 jamond.net。
Ø IP 地址:可以指定完整的 IP 地址或部分 IP 地址。
Ø 网络/子网掩码:如 192.168.1.0/255.255.255.255.0 。
Ø CIDR 规范:如 192.168.1.0/24。
2.访问控制配置举例
下面将以查看服务器配置信息为例讲解访问控制的使用。
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//将下面配置行前的“#”去掉

//由 mod_info 模块生成服务器配置信息
SetHandler server-info
//先执行 deny 规则再执行 allow 规则
Order deny,allow
//拒绝所有的客户,只允许来自 192.168.1.77 的访问
Deny from all
Allow from 192.168.1.77

#
//重新启动 httpd
# service httpd restart
//下面在客户浏览器上进行测试
//在 IP 地址为 192.168.1.77 的主机上的结果可以看到一大堆的SERVER-INFO.]
//在其他主机上的结果就是不允许访问。
提示   虽然上例中的访问控制是在 Location 容器中设置的,但这种方法也
适用于其他容器,如 Directory 容器和 Files 容器。
3 论证和授权
1.认证
(1)两种认证类型。
在 RFC 2617 中定义了两种认证方式,分别为:
Ø 基本(Basic)认证
Ø 摘要(Digest)认证
摘要认证比基本认证更加安全,但遗憾的是目前并非所有的浏览器都支持摘要认证,
所以大多数情况下用户只使用基本认证。本节主要介绍基本认证。
(2)认证的配置指令。
所有的认证配置指令既可以出现在主配置文件的 Directory 容
器中,也可以出现在./htaccess 文件中。以下列出了可用的认证配置指令。
指     令         指   令   语   法             说 明
AuthName           AuthName 领域名称             定义受保护领域的名称
AuthType           AuthType Basic 或 Digest       定义使用的认证方式
AuthGroupFile       AuthGroupFile 文件名           指定认证口令文件的位置
AuthUserFile         AuthUserFile 文件名           指定认证组文件的位置
2.授权
当使用认证指令配置了认证之后,还需要为指定的用户或组进行授权。为用户或组进
行授权的指令是 Require。Require 指令的三种使用格式如下
指令语法格式               说 明
Require user 用户名 [用户名] ……   授权给指定的一个或多个用户
Require group 组名 [组名] ……     授权给指定的一个或多个组
Require valid-user           授权给认证口令文件中的所有用户
3.管理认证口令文件和认证组文件
本节讲述基于文本文件的认证口令文件和认证组文件,关于基于数据库的认证口令文
件和认证组文件的相关内容请参考 Apache 手册。
(1)管理认证口令文件
1)创建新的认证口令文件
可以使用如下命令,在添加一个认证用户的同时创建认证口令文件:
# htpasswd –c 认证口令文件名 用户名
2)修改认证口令文件
可以使用如下命令,向现存的口令文件中添加用户或修改已存在的用户的口令:
# htpasswd 认证口令文件名 用户名
3)认证口令文件的格式
与系统中的/etc/shadow 文件类似,认证口令文件中每一行包含一个用户的用户名和加
密的口令:
用户名:加密的口令
注意 (1)基于安全因素的考虑,认证口令文件和下面讲述的认证组文件不应该
与 Web 文档存在于相同的目录下,   建议存放在/var/www/目录或其子目录下,
也可以存放在配置目录/etc/httpd/目录或其子目录下。
(2)htpasswd 没有提供删除用户的选项,要想删除用户,可以直接使用文
本编辑器对认证口令文件进行编辑,删除指定用户的行即可。
(2)管理认证组文件。Apache 没有提供创建认证组文件的命令,它只是一个文本文
件,用户可以使用任何的文本编辑器创建并修改此文件。该文件中每一行的格式如下:
组名:用户名 用户名 ……
注意   在认证组文件中指定的用户名,必须先添加到认证口令文件中。
4、论证和授权配置举例
1.在主配置文件中配置认证和授权
下面举例说明具体的配置步骤。
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//添加如下的配置行

//不使用.htaccess 文件
AllowOverride None
//指定使用基本认证方式
AuthType Basic
//指定认证领域名称
AuthName "jamond"
//指定认证口令文件的存放位置
AuthUserFile /var/www/passwd/jamond
//授权给认证口令文件中的所有用户
require valid-user

#
//创建认证口令文件,并添加两个用户
# mkdir /var/www/passwd
# cd /var/www/passwd
# htpasswd -c jamond osmond
New password:
Re-type new password:
Adding password for user osmond
# htpasswd jamond jason
New password:
Re-type new password:
Adding password for user jason
#
//将认证口令文件的属主改为 apache
# chown apache.apache jamond
#
//重新启动 httpd
# service httpd restart
#
//在客户端使用浏览器检测配置,结果弹出一个要你输入用户名和密码的对话框,当核对正确后就会
看到一个列表式的网页。。。
注意   由于 Apache 的子进程以 apache 用户运行,所以认证口令文件和认证组文件
的属主应该设为 apache。只有这样才能让 apache 子进程在认证过程中读取
这两个文件的内容。
2.在.htaccess 文件中配置认证和授权
下面举例说明具体的配置步骤。
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//将/var/www/html/private 目录的访问权限设为

//允许在.htaccess 文件中使用认证和授权指令
AllowOverride AuthConfig

#
//重新启动 httpd
# service httpd restart
//继续使用以上操作步骤生成的认证口令文件
//接下来,在/var/www/html/private 目录下生成.htaccess 文件
# vi .htaccess
//添加如下内容
AuthType Basic
AuthName "jamond"
AuthUserFile /var/www/passwd/jamond
//授权给用户 osmond 和 jason
require user osmond Jason
#
//在客户端使用浏览器检测配置,结果与上面说的一样
通过以上例子可知使用两种方法都可以使指定的用户访问授权区,它们具有
相同的效果。具体使用哪种方法将由管理员做出权衡。
5、访问控制、认证和授权的综合应用
1.对访问控制和认证授权进行控制
在对一个容器(Directory 或 Files 或 Location)同时配置了访问控制和认证授权之后,
这两类指令是否都会起作用,将由一个指令进行控制,这个指令是 Satisfy。Satisfy 指令
只有在对一个容器同时设置了访问控制和认证授权后才起作用。Satisfy 指令有两种可能的
取值:
Ø Satisfy all:访问控制和认证授权两类指令均起作用(默认值)     。
Ø Satisfy any:只要一类指令满足条件即可以访问。
下面举例说明 Satisfy 指令的使用。
2.配置指定的用户在指定的网段上访问资源
下面将以查看服务器运行状态信息为例说明 Satisfy all 的使用。
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//添加如下的配置行

SetHandler server-status
Order deny,allow
Deny from all
//允许 192.168.1 网段内主机的访问
Allow from 192.168.1
//配置认证授权
AuthType Basic
AuthName "Admin"
AuthUserFile /var/www/passwd/jamond
AuthGroupFile /var/www/passwd/admingrp
require group admin
Satisfy all

#
//创建认证组文件并更改属主
# vi /var/www/passwd/admingrp
//添加下面的行
admin: osmond jason
# chown apache.apache /var/www/passwd/admingrp
#
//重新启动 httpd
# service httpd restart
#
//在客户端使用浏览器检测配置, 192.168.1 网段上的主机的访问结果输入用户名和密码就可以访问
//当通过用户认证之后即可看到服务器运行状态信息
//而非 192.168.1 网段的主机以及没有 Admin 组身份的人都不能访问
3.允许网段内用户无条件访问而其他用户授权访问
只要将操作步骤 7.10 中的 Satisfy all 改为 Satisfy any 就可以实现 192.168.1 网段内的用
户无需认证即可访问,而在外网上可以允许 admin 组内的用户经过认证后访问。
6、WebDAV
1.WebDAV 简介
DAV 是分布式授权和版本控制的缩写,而 WebDAV 是基于 Web 的分布式授权和版本
控制。传统情况下,用户使用 FTP 或 NFS 对站点内容进行上传或更新。但是有许多人士认
为 FTP 和 NFS 是不安全的协议,尽量不要在运行 Web 服务器的计算机上运行 FTP 和 NFS
服务器。然而不运行这两种服务器,用户就无法对自己的站点内容进行维护,WebDAV 提
供了一种新的基于 HTTP 协议的解决方案。WebDAV 的官方网站是http://www.webdav.org。
当对 Apache 配置了对 WebDAV 支持以后,用户就可以在支持 WebDAV 的客户端上对
站点内容进行上传和维护。
2.限制应用认证授权的时机
在介绍下面的内容之前有必要先了解一下 HTTP 的请求方法。当 HTTP 客户端与服务
器建立连接后就要发送请求,请求可以分为 3 部分:方法、 请求资源和 HTTP 版本号。   HTTP
请求方法通常是 GET、POST 和 HEAD,但 HTTP 规范(RPC 2616)中还定义了许多 HTTP
请求方法。 这些方法包括:   GET、 POST、PUT、DELETE、CONNECT、OPTIONS、TRACE、
PATCH、PROPFIND、PROPPATCH、MKCOL、COPY、MOVE、LOCK 和 UNLOCK。
要告知 Apache 为指定 HTTP 的请求方法进行配置,可以使用
指令。 例如下面的指令片断可以允许任何人浏览网站,但是只允许一组特殊的用户应答 CGI
程序。
AuthType Basic
AuthName "Example"
AuthUserFile /var/www/passwd/jamond
AuthGroupFile /var/www/passwd/admingrp

require group admin

在对 Apache 配置 WebDAV 时也要使用类似的配置,从而让任何人都能浏览网站,指
定的用户才能对网站进行上传和更新。
3.配置 WebDAV
在 Apache 2.0 中默认包含了支持 WebDAV 的模块 mod_dav。下面讲述配置过程。
//修改主配置文件
# vi /etc/httpd/conf/httpd.conf
//将文档根目录的访问控制改为

Options Indexes FollowSymLinks
AllowOverride None
//启用 WebDAV
Dav On
//配置认证指令
AuthType Basic
AuthName "Admin"
AuthUserFile /var/www/passwd/jamond
AuthGroupFile /var/www/passwd/admingrp
//配置条件授权,即对非浏览的 HTTP 请求方法进行认证授权

require group admin


#
//重新启动 httpd
# service httpd restart
#
//将服务器根文档目录的属主设为 apache
# chown -R apache.apache /var/www/html/
#
注意   必须将 WebDAV 所管理的目录的属主设为 apache,以便以 apache 用户运行
的 Apache 子进程能对目录内容进行更新。
7、组织衙管理站点内容的方法
Web 服务器是更新量最大的服务器之一,随着时间的推移站点内容将越来越多。在维
护方面会带来两方面的问题:
(1)如何在文档根目录空间不足的情况下继续添加站点内容。
(2)如何在文件移动位置之后使得用户仍然能够访问。
对于第 1 个问题有 3 种解决方法:
Ø 挂装新的磁盘分区到文档目录(可以是本地磁盘分区或远程 NFS 分区)
Ø 在文档目录下使用符号链接使文档目录之外的内容被访问。
Ø 使用别名机制使文档目录之外的内容被访问。
对于第 2 个问题的解决方法是使用页面重定向。
8、符号链接和别名
关于挂装磁盘分区的方法属于系统管理的范畴,本书不做过多叙述。下面举例讲解符
号链接和别名的使用。
1.符号链接
在 Apache 的默认配置中已经包含了符号链接的指令:

Options FollowSymLinks


Options Indexes FollowSymLinks

所以只要在根文档目录下使用 ln –s 命令创建符号链接即可。
# cd /var/www/html
# ln -s /usr/share/doc doc
//可以使用客户端浏览器进行测试http://192.168.1.100/doc/
符号链接对站点内容进行扩展
2.别名
使用别名是另一种将根文档目录以外的内容加入站点的方法。在 Apache 的默认配置
中,由于 error 目录和 manual 目录都在文档根目录 html 之外,所以设置了这两个目录的别
名访问,同时还使用 Directory 容器配置了对别名目录的访问权限。下面再举一个简单的使
用别名的例子。
//编辑主配置文件
# vi /etc/httpd/conf/httpd.conf
//添加如下的配置
Alias /ftp /var/ftp/pub

AllowOverride None
Options Indexes
Order allow,deny
Allow from all

#
//重新启动 apache 之后可以使用客户端浏览器进行测试