十周三次课(3月2日)

时间:2021-10-29 13:53:50

11.18 Apache用户认证

  1. 用户认证就是在用户访问网站的时候,需要输入用户名密码才能顺利访问。一些比较重要的站点或者网站后台通常会加上用户认证,目的是保证安全。
  2. 用户认证步骤:
    a.编辑虚拟主机的配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
    b.修改第2台主机上的内容如下
 <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com 
    <Directory /data/wwwroot/111.com> //指定认证的目录
        AllowOverride AuthConfig   //这个相当于打开认证的开关
        AuthName "111.com user auth"  //自定义认证的名字,作用不大
        AuthType Basic  //认证的类型,一般为Basic
        AuthUserFile /data/.htpasswd  //指定密码文件所在目录
        require valib-user //指定需要认证的用户为全部可用用户
    <Directory> 
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

c.创建密码文件

/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd   zchuny   //-c表示创建 -m表示使用md5的加密类型 /data/.htpasswd表示密码文件所在位置 zchuny表示用户名,这里可不写useradd

接着输入2次密码确认即可。

cat /data/.htpasswd //这里可以看到输入。冒号左边是用户名,右边是加密字符串

再次执行创建密码文件的命令时,这时候就可以不用-c选项了。在/data/.htpasswd下看到另一个新创建的用户名及加密字符串。

d. 重新加载配置文件

usr/local/apache2.4/bin/apachectl -t 
usr/local/apache2.4/bin/apachectl  graceful

e.绑定hosts,浏览器测试

curl -x127.0.0.180 111.com -I //输出中会出现HTTP/1.1 401 Unauthorized。这里是说访问的内容需要进行用户认证。

在浏览器中输入111.com后,会提示需要进行身份验证。输入正确的用户名和密码即可看到里面的内容。

curl -x127.0.0.1:80 -uzchuny:234514 111.com -I //-u后面跟是用户名和密码。-I的作用是不看内容只看状态码

输入正确的用户名和密码,可以看到下面的输入中出现HTTP/1.1 200 ok则表示正常。[root@zcy-1 ~]变为111.com[root@zcy-1 ~]

3.针对单个文件进行认证。
a.将第2台虚拟主机修改为以下内容

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    <FilesMatch 123.php>  //匹配123.php文件
         AllowOverride AuthConfig
         AuthName "111.com user auth" 
         AuthType Basic   
         AuthUserFile /data/.htpasswd   
         require valib-user
    <FilesMatch>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

b.重新加载配置文件

usr/local/apache2.4/bin/apachectl -t 
usr/local/apache2.4/bin/apachectl  graceful

c.vim编辑/data/wwwroot/111.com/123.php.并在里面写入

域名跳转

  • 当访问老师的论坛时,可以用www.lishiming.net或者ask.apelearn.com访问,而用www.lishiming.net访问的时候,浏览器里面的网址直接变成了ask.apelearn.com,这其实就是域名的跳转过程。做域名跳转有什么用呢?在老师看来主要有2个方面的作用:1.一个站点有多个域名会对SEO有影响,说白了就是百度搜索关键词的排名有影响,如果多个域名跳转到指定的一个域名,这样以这个域名为中心,就可以把权重集中在这个域名上,关键词的搜索也就靠近了。2.如果之间的某个域名不在使用了,但是搜索引擎还留着之前老域名的链接,这意味着用户可能会搜到我们的网站并且点击老的域名,就需要把老域名做个跳转跳到新域名,这样用户搜的时候,也可以访问到网站
    步骤:
    1.在虚拟主机配置文件中编辑第二台虚拟主机,更改为如下
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com 2111.com.cn
    <IfModule mod_rewrite.c>  //需要mod_Rewrite模块支持
        RewriteEngin on   //打开Rewrite功能
        RewriteCond %{HTTP_HOST} !^111.com$ //定义Rewrite的条件,主机名(域名)不是www.123.com的满足条件 
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] //定义Rewrite规则,当满足上面的条件时,这条规则才会执行 。L表示只跳一次。
     <IfModule>   
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

2.重新加载配置文件,测试之前检查apache是否加载了rewrite模块,如果没有加载。可以在配置文件中打开它,将#LoadModule rewrite_module modules/mod_rewrite.so这行的#号去掉即可。 再次加载配置文件查看是否已加载

3.测试

curl -x192.168.244.128:80 2111.com.cn -I

输入中会出现301状态码。
跳转成功

4.状态码含义
404:表示页面不存在
301:永久跳转,提升权重
302: 临时跳转,不会增加权重
401:用户名密码验证。验证不对是401,验证正确为200
403:在配置文件中granted表示授权,允许访问。状态码为200
denied表示不允许访问。这是会出现403

    <Directory />
    AllowOverride none
    Require all granted
</Directory>


11.21 Apache访问日志

  1. 访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题。比如有攻击时,是可以通过查看日志看到一些规律。
  2. 之前操作的第2台虚拟主机的访问日志是定义在/usr/local/apache2.4/logs/目录下,可以看到111.com-access_log(访问日志)和111.com-error_log(错误日志)。通过cat来查看访问日志,可以看到其中”HEAD”是因为使用curl命令加上-I后只出现状态码而产生的。而GET则是使用curl不加-I选项后产生的。还可以看到来源IP ,访问时间,访问的域名,行为,HTTP的版本。状态码。

  3. 定义日志格式
    在apache的主配置文件/usr/local/apache2.4/conf/httpd.conf中,

 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined  ///User-Agent表示用户代理,用户通过浏览器获取到网站的内容 Referer记录你的浏览器上次访问的网址是什么。

    LogFormat "%h %l %u %t \"%r\" %>s %b" common //默认使用这个

4.在更改虚拟主机配置文件将CustomLog "logs/111.com-access_log" common
//最后的common改为combined

5.加载配置文件

6.再次curl后去查看访问日志的格式已经发生了变化