Apache配置对站点目录的认证

前言:

有的时候需要对站点中的某个目录进行保护,只有输入指定的账号密码才可以浏览。这当然可以通过动态网站设计语言来实现,但通过对Apache本身的配置来实现似乎要更方便一些。

配置方法:

一、Apache配置编辑及站点创建

创建一个站点配置文件。

[root@localhost auth]# vim /etc/httpd/conf.d/vhost1.conf

内容如下:

<Directory "/tmp/html/auth/">      // 要启用认证的目录
    AuthName "请认证身份"           // 服务器返回的认证对话框的标题
    AuthType Basic                 // 认证类型
    AuthUserFile /tmp/html/auth/.htpasswd      // 密码配置文件路径
    require valid-user             // 允许通过认证的所有用户访问,如果改为某一用户名则只允许此用户访问
</Directory>
<VirtualHost *:80>                 // 创建一个简单的虚拟主机用于测试
    DocumentRoot /tmp/html/
</VirtualHost>

创建站点运行目录及要开启认证的站点子目录。

[root@hostname ~]# mkdir -p /tmp/html{,/auth}

查看此时的站点目录结构。

[root@hostname ~]# tree /tmp/html/
/tmp/html/
└── auth

在站点子目录下创建首页文件。

[root@hostname ~]# echo 'Hello,world!' > /tmp/html/auth/index.html

二、生成用户密码配置文件

创建新文件,并向其中添加一个用户认证信息。

[root@hostname ~]# htpasswd -cb /tmp/html/auth/.htpasswd user1 123456     //-c参数用于创建新文件,若文件已存在则无需使用-c参数,-b参数用于指定在命令行中直接键入密码,而不是用交互模式。user1为用户名,123456为密码。
Adding password for user user1   //提示成功添加了user1的用户密码

增加一个新的认证用户。

[root@hostname ~]# htpasswd -b /tmp/html/auth/.htpasswd user2 123456
Adding password for user user2   //成功添加

修改用户的密码。

[root@hostname ~]# htpasswd -mb /tmp/html/auth/.htpasswd user1 654321
Updating password for user user1 //密码更新成功

删除认证用户。

[root@hostname ~]# htpasswd -D /tmp/html/auth/.htpasswd user2
Deleting password for user user1 //删除成功

测试:

使用浏览器访问http://URL/auth(URL是你网站的域名或IP)就会看到要求认证的对话框啦!

这里我为了方便,使用的是Linux下的Links浏览器进行测试的。

正确输入账号密码后,即可看到网页内容。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code