笔记内容:
11.18 Apache用户认证
11.19/11.20 域名跳转
11.21 Apache访问日志
笔记日期:2017.10.09
11.18 Apache用户认证
用户认证是在你打开网页的时候就需要进行认证,如果没有通过认证就不允许访问网页,和网站上的登录账户不一样。这样的做法虽然可以增加安全性,但是会导致用户体验很差,因为总是要你认证完了才能访问网页,也是挺麻烦的。不过这样的需求还是有可能会遇到的,因为有些网页需要比较高的安全保证,例如后台管理员登录的入口网页。
编辑虚拟主机配置文件:
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改成如下内容:
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "111.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
生成用户密码文件:
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd user111
可以查看文件里的内容,左边的是用户名,右边的是密码,这个密码是用md5加密的:
第二次再添加用户的时候就不需要加-c选项了,因为密码文件已经创建过了:
这时查看密码文件就可以看到多了一行内容:
重新加载配置文件:
然后使用curl命令测试一下:
发现出现了401状态码,这是因为需要进行用户验证。
使用-I选项能看到详情:
这时候使用浏览器进行访问就会发现需要你输入用户密码进行验证了(域名需要在Windows的hosts文件里配置一下,让这个域名指向你虚拟机的IP):
需要输入刚刚设置的用户名和密码才可以进行访问:
如果要使用curl命令进行访问的话也可以,需要使用-u选项指定好用户名和密码:
我们现在设置的是访问所有的网页文件都需要进行认证,除此之外还可以设置针对单个文件进行认证,只有访问这个文件才需要进行认证,访问其他的文件则不需要进行认证。
修改一下虚拟主机配置文件,修改成以下内容:
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
AllowOverride AuthConfig
AuthName "111.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
2.创建123.php文件,用于测试:
vim /data/wwwroot/111.com/123.php
现在可以直接访问111.com:
但是如果访问111.com下的123.php就会需要认证了:
同样的需要加上用户名和密码验证后才能访问:
11.19/11.20 域名跳转
域名跳转就是从一个域名跳转到另一个域名上,例如我要访问111.com这个域名,然后加载时会跳转到123.com这个域名上并显示页面内容,这就是域名跳转。
修改虚拟主机配置文件为以下内容:
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
RewriteEngine on //打开rewrite功能
RewriteCond %{HTTP_HOST} !^www.123.com$ //定义rewrite的条件,主机名(域名)不是www.123.com满足条件
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行
修改完之后重新加载配置文件:
在测试之前先检查一下你的apahce是否加载了rewrite模块:
/usr/local/apache2.4/bin/apachectl -M |grep rewrite
如果没有加载的话,需要配置一下httpd的配置文件:
模块加载了之后就可以进行测试了:
状态码显示301就表示成功:
11.21 Apache访问日志
访问日志记录用户的每一个访问、请求,日志文件在/usr/local/apache2.4/logs/目录下:
刚刚我们做实验访问的是111.com,所以日志文件是以111.com开头的,查看日志内容:
这个日志是可以定义它的格式的,在apache的主配置文件里定义:
%h 表示来源ip
%l 表示用户
%u也表示用户
%t表示时间
%r表示请求类型(HEAD或GET之类)
%>s 表示状态码
%b 表示大小
%{User-Agent}i 表示用户代理(浏览器或curl就是代理,会显示代理的信息)
%{Referer}i 表示浏览器上一次访问的网址
开始进行配置,将虚拟主机配置文件修改成以下内容:
然后使用curl命令和浏览器进行访问一下,然后再查看一下日志文件会发现最新的两行内容格式不一样了:
扩展
apache虚拟主机开启php的短标签
http://ask.apelearn.com/question/5370