认证对象:某一个网站目录。
启用认证
1.即用AllowOverride
指令指定哪些指令在针对单个目录的配置文件中有效:AllowOverride AuthConfig
2.设置密码登录访问某个站点或者文件等
先介绍用密码来保护服务器上的目录。 首先需要建立一个密码文件。这个文件应该放在不能被网络访问的位置,以避免被下载。例如,如果/usr/local/apache/htdocs以外的空间不能被网络访问,那么可以考虑把密码文件放在/usr/local/apache/passwd目录中。 Apache在其安装目录的bin子目录中提供了htpasswd工具,用于建立密码文件,可以这样使用: htpasswd -c /usr/local/apache/passwd/passwords rbowen htpasswd会要你输入密码,并要求重新输入以进行确认: # htpasswd -c /usr/local/apache/passwd/passwords rbowen New password: mypassword Re-type new password: mypassword Adding password for user rbowen 如果htpasswd不在搜索路径中,则必须使用完整路径,如:/usr/local/apache/bin/htpasswd 然后修改httpd.conf或.htaccess文件,指示服务器允许哪些用户访问并向用户索取密码。若要保护/usr/local/apache/htdocs/secret目录,则可以将下列指令写入/usr/local/apache/htdocs/secret/.htaccess或者httpd.conf的<Directory /usr/local/apache/apache/htdocs/secret>段。 AuthType Basic AuthName "Restricted Files" AuthUserFile /usr/local/apache/passwd/passwords Require user rbowen
对应的实际测试效果:
</VirtualHost>
<VirtualHost *:80>
ServerName 127.0.0.1
DocumentRoot "E:/wamp/www/"
ErrorLog "E:/wamp/logs/www-error.log"
CustomLog "E:/wamp/logs/www-access.log" common
<Directory "E:/wamp/www/">
Options Indexes FollowSymLinks
#AllowOverride all
AllowOverride AuthConfig
AuthType Basic
AuthName "test authconfig"
AuthUserFile E:/wamp/bin/apache/Apache2.2.21/htpasswd/passwords
Require user rbowen
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
3允许多个人访问:
如果想允许多人访问,那么就必须建立一个组文件以确定组中的用户。其格式很简单,可以用你喜欢的编辑器建立,例如:
GroupName: rbowen dpitts sungo rshersey
它只是每组一行的一个用空格分隔的组成员列表。
向已有的密码文件中增加一个用户,可以输入:
htpasswd /usr/local/apache/passwd/passwords dpitts
程序的提示和上面的一样,但是它会追加到已有的文件中,而不是建一个新文件(参数 -c
可以强制建立新的密码文件)。
现在,需要将.htaccess
文件修改成这样:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName
现在,GroupName
组中的成员都在password
文件中有一个相应的记录,从而允许他们输入正确的密码进行访问。
除了建立组文件,还有另一种途径允许多人访问,就是使用如下指令:
Require valid-user
使用上述指令,而不是 Require user rbowen
,可以允许密码文件中的所有用户使用正确的密码进行访问。通过为每个组建立一个密码文件,这里甚至允许列举各个组,其优点是Apache只需要检查一个文件(而不是两个),其缺点是,必须维护众多密码文件,而且要确保AuthUserFile
指定了一个正确的密码文件
ps:上述如果人多的话,认证需要耗费时间。
4其他:
Allow
和Deny
指令可以允许或拒绝来自特定主机名或主机地址的访问,同时,Order
指令告诉Apache处理这两个指令的顺序,以改变过滤器。
这些指令的用法:
Allow from address
address可以是一个IP地址(或者IP地址的一部分),也可以是一个完整的域名(或者域名的一部分),还可以同时指定多个IP地址和域名。
比如,要拒绝不受欢迎的兜售垃圾的站点:
Deny from 205.252.46.165
这样,这个指令所管辖的区域将拒绝所有来自该地址的访问。除了指定IP地址,也可以指定域名,如:
Deny from host.example.com
另外,还可以指定地址或域名的一部分来阻止一个群体:
Deny from 192.101.205
Deny from cyberthugs.com moreidiots.com
Deny from ke
Order
可以组合Deny
和Allow
指令,以保证在允许一个群体访问的同时,对其中的一些又加以限制:
Order deny,allow
Deny from all
Allow from dev.example.com
只列出Allow
指令不会得到你想要的结果,因为它在允许指定对象访问的同时并不禁止其他未列出的对象的访问。所以上例使用的方法是:首先拒绝任何人,然后允许来自特定主机的访问。