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
这里写图片描述

这里写图片描述

• curl -x127.0.0.1:80 -uaming:passwd www.123.com -I //状态码为200,输错密码就会提示401
这里写图片描述

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

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    <FilesMatch admin.php> #当打开的页面是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 123.com/admin.php
curl -x127.0.0.1:80 -uaming:qq1234 www.123.com/admin.php -I
这里写图片描述

域名跳转

<IfModule mod_rewrite.c> //需要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

<VirtualHost *:80>
    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
</VirtualHost>

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

curl -x127.0.0.1:80 1123.com.cn/123/12 -I
这里写图片描述

这里写图片描述
这里的代码是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
这里写图片描述

vim /usr/local/apache2.4/conf/httpd.conf 在主配置文件中定义日志格式,默认是用common
这里写图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值