标签:Apache 用户认证
平常工作中,有必要对一些特定的页面做用户认证,就是登录进去的时候,要先输入用户名和密码才可以进入,这样做比较安全。
那么用户认证怎么做呢?具体操作见下图,
输入命令 cat /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,查看文件内容,确定更改第二个 VirtualHost 虚拟主机,因为第一个虚拟主机是默认虚拟主机,先不管它。接着输入命令 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,回车,见下图,
插入上图红色框框的内容,保存并退出。
VirtualHost 的内容如下:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.111.com"
ServerName 111.com
ServerAlias www.example.com
<Directory /data/wwwroot/111.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "111.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>
</VirtualHost>
接下来输入命令 /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd lys ,回车,见下图,
用 -c 来创建密码文件,-m 指定密码类型为md5加密,lys 直接增加用户lys。来查看一下文件 /data/.htpasswd,见下图,
可以看到文件里面有一堆乱码,前面是用户名 lys,后面是密码,这是因为用 -m 设置的md5加密的密码。接着第二次创建用户 lys2,见下图,
这次的命令就不用加 -c 选项了,然后查看文件 /data/.htpasswd ,可以看到多了一行,用户名是 lys2。
以上就是创建用户的过程,接下来,重新加载一下配置文件,
开始做测试,输入命令 curl -x127.0.0.1:80 111.com,回车,见下图,
提示了401错误,说明访问的内容需要做用户认证。使用命令 curl -x127.0.0.1:80 111.com -I,回车,可以看到提示 WWW-Authenticate: Basic realm="111.com user auth"。我们也可以在浏览器上登录,先在Windows的hosts上添加网站 111.com,见下图,
保存,然后到浏览器上,访问 111.com,见下图,
就可以看到,登录需要用户名和密码。接着输入用户名 lys 和密码,见下图,
点击登录,就进入下图,
以上就是用户认证。那么 curl 要怎么输入用户名和密码呢?输入命令 curl -x127.0.0.1:80 -ulys:Ilovexm/520@. 111.com -I,回车,见下图,
这样就进入了,格式为 -u用户名:密码,状态码为 200,就是正常状态。如果输错密码,就是下图的状态,
状态码又变成 401 了。
关于用户认证还有另外一个需求,
假设后台访问的地址是 admin.php ,就可以针对 这个 admin.php 做访问认证。这边使用的是 FileMatch,意思为匹配到 admin.php 的时候,才会执行下面那些命令。现在就来改一下配置文件,输入命令 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,回车,见下图,
更改了上图红色框框的内容,保存并退出。重新加载配置文件,
然后还要编译 123.php 文件,输入命令 vim /data/wwwroot/111.com/123.php,回车,见下图,
输入上图内容,保存并退出。echo 就是原文输出的意思。接着做测试,输入命令 !curl ,回车,见下图,
一开始访问 111.com 的密码是错的也可以进入,说明不需要密码就可以访问。接着访问 123.php 的时候,就开始报错 401,这是因为刚刚针对 123.php 做了用户认证的限制。需要输入用户名和密码,输入命令 curl -x127.0.0.1:80 111.com/123.php -ulys:Ilovexm/520@. -I,回车,见下图,
输入用户名和密码之后,就可以访问了。
以上就是用户认证,当有些内容不想让别人访问的时候,就需要加上用户认证。
标签:Apache 用户认证
原文地址:http://blog.51cto.com/13503302/2115585