一 Apache用户认证
此处用户认证的意思是:需要浏览器对用户进行认证,认证成功后用户才能浏览网站内容,
使用场景1:对网站进行用户认证
1、在虚拟主机配置文件中加入以下内容;
<Directory /data/wwwroot/www.123.com>
AllowOverride AuthConfig
AuthName "123.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</Directory>
2、生成密码文件
# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd lijie
命令中的-c 表示创建,-m表示md5加密,/data/.htpasswd是密码文件所在路径,lijie是创建的用户名
随后系统两次提示输入密码,运行结果如下:
上图可以看到密码文件中出现了一行字符串,冒号左边是用户名,右边就是md5加密后的密码
我们再创建一个用户
# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd lj
此时命令中不需要-c创建的选项,可以看到密码文件中新增了用户lj的加密后的密码
3、重新加载配置
# /usr/local/apache2.4/bin/apachectl -t //检查语法
# /usr/local/apache2.4/bin/apachectl graceful //重新加载
4、绑定主机
# curl -x127.0.0.1:80 111.com
上图可以看到,此时提示401错误
我们再来看下401是什么意思?
上图可以看到401提示需要做用户验证,
同样的我们在浏览器打开的界面如下图:
出现上述现象输入用户名密码进行验证即可,Linux下用户名密码输入方式如下
上图输入用户名密码后可以看到状态码已经变成200 OK 表示认证成功
使用场景2:针对某个文件设置用户认证
1、需要加入的内容如下:
<FilesMatch admin.php>
AllowOverride AuthConfig
AuthName "123.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
其中admin.php就是表示当匹配到这个文件时就需要做用户验证
2、重新加载配置
# /usr/local/apache2.4/bin/apachectl -t //检查语法
# /usr/local/apache2.4/bin/apachectl graceful //重新加载
4、访问主机及123.php
新增文件123.php
访问主机# curl -x127.0.0.1:80 111.com -I
上图我们发现访问主机不需要验证用户名和密码就能成功登录
但是当我们访问网站下的123.php页面时就提示401错误,
# curl -x127.0.0.1:80 111.com/123.php -I
这时就需要进行用户密码验证,如下
二 域名跳转
也叫域名重定向
使用场景:新旧域名的切换时,老用户的习惯保留,网站的SEO排名,如果有两个域名网站内容一样的话,搜索引擎会认为新的域名是冒牌货,而把较高的权重给旧域名,但是我们想使用新域名的话,就需要做一个域名重定向跳转,并且给一个永久跳转的状态码301,这时搜索引擎就会认为旧域名不用了,而降下就域名的权重,将所有的权重给新域名
我们要做的就是配置301跳转
1、编辑虚拟主机配置文件
加入以下内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^111.COM$
RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
</IfModule>
命令中301表示永久重定向,另外有一个状态码302表示临时重定向
2、重新加载配置文件
# /usr/local/apache2.4/bin/apachectl -t //检查语法
# /usr/local/apache2.4/bin/apachectl graceful //重新加载
3、检测apache是否加载重定向模块rewrite
# /usr/local/apache2.4/bin/apachectl -M |grep rewrite //检测是否加载
如果没有加载,就需要手动去配置文件中加载
# vi /usr/local/apache2.4/conf/httpd.conf //编辑配置文件
搜索rewrite
去掉此行行首的#号
再次检查rewrite模块是否加载
上图表示加载成功
4、测试域名跳转是否成功
测试域名跳转成功与否 1# curl -x192.168.31.157:80 www.111.com -I
测试跳转URL 2# curl -x192.168.31.157:80 www.111.com
测试跳转URL 3# curl -x192.168.31.157:80 www.111.com/213fdsffg
上面 测试URL不存在,但调转是成功了的,只是我们没有写这个页面而已,提示的状态码是404,如下
换一个已经写好的页面,则提示200 OK ,说明域名跳转成功
状态码403表示拒绝访问,当httpd配置文件中的Require all granted被修改为Require all denied时就会出现此状态提示
三 Apache访问日志
日志目录/usr/local/apache2.4/logs
查看域名跳转实验时候的logs如下
上图中以HEAD开头的表示是使用命令 curl 时留下的记录,以GET开头的表示的是加上-I时留下的记录
但这个日志格式比较简单,我们可以先在主配置文件中查看下日志格式
# vim /usr/local/apache2.4/conf/httpd.conf
修改下图的LogFormat,框中引号内的参数,给我们提供了common 和 combined两种格式,默认使用的是common格式,我们在上图中看到的格式就是由下图引号内的参数决定的
h : 来源IP
l:用户
u:用户
t: 时间
r:状态码
b:大小
User Agent :用户代理,可以是浏览器做代理或者使用curl命令访问到网站,返回的内容是浏览器给的字段或curl相关给的字段
Referer:记录浏览器上一次访问的页面,表示用户是从哪个页面跳转过来的
接下来我们在虚拟主机配置文件中修改日志格式
修改前:
修改后:
修改成功后重新加载虚拟主机配置文件,再来访问这个主机:
多访问几次后,我们再来查看日志
# /usr/local/apache2.4/logs/111.com/access_log
推荐链接
apache虚拟主机开启php的短标签 http://ask.apelearn.com/question/5370