Apache用户认证

这种是当你输入用户名密码之后才让你访问网站(如管理员登录入口)。不像论坛的登录用户输入用户名和密码。这个是当你浏览器访问网站的时候,什么都不显示,直接跳出对话框输入用户名和密码。
需求当访问abc.com时,不让你直接访问,必须输入用户名密码对了才可访问。
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那个虚拟主机编辑成如下内容
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
<Directory /data/wwwroot/www.123.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "123.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,其他类型没用过
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //valid-user为密码文件定义用户。指定需要认证的用户为全部可用用户
</Directory>
</VirtualHost>
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming //Apache自带工具生成文件
/usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd lshx //第二次创建用户不需要-c

重新加载配置-t , graceful
/usr/local/apache2.4/bin/apachectl -t

需要绑定hosts,浏览器测试

命令行测试
curl -x192.168.211.149:80 111.com //状态码为401。说明需要做用户认证
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>

命令行测试
curl -x127.0.0.1:80 -uaming:passwd www.123.com //状态码为200
curl -x127.0.0.1:80 -ulsx:1 111.com -I
HTTP/1.1 200 OK

还可以针对单个文件进行认证。
有些内容不想让别人随便访问。
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
<FilesMatch admin.php> //指定认证文件
AllowOverride AuthConfig
AuthName "123.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
</VirtualHost>
测试:
curl -x127.0.0.1:80 111.com/123.php -I
HTTP/1.1 401 Unauthorized



本文转自 虾米的春天 51CTO博客,原文链接:http://blog.51cto.com/lsxme/2052681,如需转载请自行联系原作者

上一篇:zabbix3.2监控Windows网卡流量


下一篇:vi编辑器常用配置