Apache用户认证、域名跳转、Apache访问日志

十周三次课(12月20日)
11.18 Apache用户认证
11.19/11.20 域名跳转
11.21 Apache访问日志
扩展
apache虚拟主机开启php的短标签
http://ask.apelearn.com/question/5370

httpd用户认证
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 //指定需要认证的用户为全部可用用户
    </Directory>
</VirtualHost>

生成密码qq1234,第一次需要-c,第二次就不用c了
• /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming
这里写图片描述

这里写图片描述
• 重新加载配置-t , graceful
• 绑定hosts,浏览器测试
• curl -x127.0.0.1:80 www.123.com //状态码为401
Apache用户认证、域名跳转、Apache访问日志_第1张图片

Apache用户认证、域名跳转、Apache访问日志_第2张图片

• curl -x127.0.0.1:80 -uaming:passwd www.123.com -I //状态码为200,输错密码就会提示401
Apache用户认证、域名跳转、Apache访问日志_第3张图片

针对单个文件进行认证
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf


    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
     #当打开的页面是admin.php才会执行下面的密码验证
        AllowOverride AuthConfig
        AuthName "123.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    

curl -x127.0.0.1:80 123.com/admin.php
curl -x127.0.0.1:80 -uaming:qq1234 www.123.com/admin.php -I
Apache用户认证、域名跳转、Apache访问日志_第4张图片

域名跳转

 //需要mod_rewrite模块支持
        RewriteEngine on  //打开rewrite功能
        RewriteCond %{HTTP_HOST} !^www.123.com$  //定义rewrite的条件,主机名(域名)不是www.123.com满足条件
        RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行,301是永久重定向,302是临时重定向,临时的不会增加搜索引擎的权重,一般都是用301
</IfModule>

验证之前需要检查rewrite模块是否打开。如果没有打开需要加载
/usr/local/apache2.4/bin/apachectl -M| grep rewrite
这里写图片描述
vim /usr/local/apache2.4/conf/httpd.conf
这里写图片描述
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful


vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf


    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.111.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common



    DocumentRoot "/data/wwwroot/123.com"
    ServerName 123.com
    ServerAlias www.123.com 1123.com.cn
# 
 #  
 #      AllowOverride AuthConfig
 #       AuthName "123.com user auth"
 #       AuthType Basic
 #       AuthUserFile /data/.htpasswd
 #       require valid-user
 #  
#    
     
        RewriteEngine on
        RewriteCond %{HTTP_HOST} !^123.com$
        RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
     
    ErrorLog "logs/123.com-error_log"
    CustomLog "logs/123.com-access_log" common

curl -x127.0.0.1:80 1123.com.cn/123/12 -I
Apache用户认证、域名跳转、Apache访问日志_第5张图片

Apache用户认证、域名跳转、Apache访问日志_第6张图片
这里的代码是301,表示永久跳转
404是没有这个页面
403是配置文件/usr/local/apache2.4/conf/httpd.conf没有修改Require all denied 为 Require all granted
401是用户名密码验证不对,密码验证对了就是200
200是正常访问

Apache访问日志
apache日志会根据主机分别创建日志文件,目录:/usr/local/apache2.4/logs
Apache用户认证、域名跳转、Apache访问日志_第7张图片

vim /usr/local/apache2.4/conf/httpd.conf 在主配置文件中定义日志格式,默认是用common
Apache用户认证、域名跳转、Apache访问日志_第8张图片

h来源ip、l用户密码、u用户、t时间、r行为,网址、s状态码、b大小
{Referer}浏览器进入一个网站后的第二个页面,referer记录的日志的就是第一个访问页面的网址是什么、在百度中搜索进入开源中国网站首页后,referer记录的就是百度搜出来的结果页面网址
{User-Agent}用户代理(怎么获得网址内容,是浏览器还是curl)

修改日志记录的方式为combined
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
CustomLog “logs/123.com-access_log” common
CustomLog “logs/123.com-access_log” combined
tail -30 /usr/local/apache2.4/logs/123.com-access_log

你可能感兴趣的:(linux学习之路)