Apache用户认证
- 修改虚拟主机配置文件
此处教程我们编辑/usr/local/apache2.4/conf/extra/httpd-vhosts.conf修改上节配置的111.com的虚拟机配置为以下内容:
<Directory /data/wwwroot/www.111.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "111.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>
- 创建用户并生成密码
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd 用户名
此处密码我们设定为:12345678 用户为 yolks
- 重新加载配置文件
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
- 重新测试提示401,表示需要用户验证
curl -x127.0.0.1:80 111.com
直接命令行测试
curl -x127.0.0.1:80 -uyolks:12345678 111.com -I
返回状态码200说明请求正常
还可以针对访问的页面进行认证
- 例如管理员登陆用到admin.php,则可以对此文件进行认证方可访问:
需要在/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置文件中111.com添加如下配置表示对admin.php文件做限制:
<FilesMatch admin.php>
AllowOverride AuthConfig
AuthName "111.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user
</FilesMatch>
- 编辑需要验证的文件
vim /data/wwwroot/111.com/admin.php
<?php
echo "this is admin.php test page!";
?>
- 正常访问,不输入密码测试,提示无权限401
curl -x127.0.0.1:80 111.com/admin.php -I
- 输入密码请求测试
curl -x127.0.0.1:80 -uyolks:12345678 111.com/admin.php
返回数据正常200
域名跳转
- 编辑虚拟机配置
对应文件还是虚拟主机配置文件/usr/local/apache2.4/conf/httpd.conf中添加如下配置:
<IfModule mod_rewrite.c> //需要mod_rewrite模块支持
RewriteEngine on //打开rewrite功能
RewriteCond %{HTTP_HOST} !^.111.com$ //定义rewrite的条件,主机名(域名)不是111.com时满足条件跳转到111.com来
RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L(L表示last只跳转1次)] //定义rewrite规则,当满足上面的条件时,这条规则才会执行
</IfModule>
如下图所示:
- 检查配置文件是否有误
/usr/local/apache2.4/bin/apachectl -t
- 重新加载配置文件
/usr/local/apache2.4/bin/apachectl graceful
- 检查rewrite模块是否加载
/usr/local/apache2.4/bin/apachectl -M
- 没有加载则需要编辑apache配置文件,取消rewrite模块的注释
vi /usr/local/apache2.4/conf/httpd.conf
- 检查配置文件是否有误
/usr/local/apache2.4/bin/apachectl -t
- 重新加载配置文件
/usr/local/apache2.4/bin/apachectl graceful
- 测试
curl -x127.0.0.1:80 www.example.com -I
Apache访问日志
默认apache 配置的日志文件
路径: /usr/local/apache2.4/logs/111.com-access_log
查看111.com虚拟主机用户访问请求日志
此日志文件输出的内容含义参考主配置文件 /usr/local/apache2.4/conf/httpd.conf
默认显示规则
LogFormat "%h %l %u %t \"%r\" %>s %b" common
- 参数含义解释
- %h : 访问来源ip
- %l : 用户
- %u : 用户
- %t : 时间
- %r : request行为,包括方式和网址
- s : 状态码
- %b : 大小
- 主配置文件还有一种显示规则
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- 比起默认的参数还多了两个
- %{Referer} : 简单理解就是访问某个网站目录之后,进入之前的浏览器链接就是当前链接的referer
- %{User-Agent} : 用户代理,curl和单独的浏览器分别代表不同的user-agent,浏览器访问即浏览器为用户代理,curl访问也是用户代理;
在虚拟主机配置文件配置访问日志
- 将 common参数修改为 combined
此处新访问多显示内容即为新格式format生效的格式
拓展
apache虚拟主机开启php的短标签 http://ask.apelearn.com/question/5370