zoukankan      html  css  js  c++  java
  • 5月29日任务 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志

    11.18 Apache用户认证

    这个功能就是在用户访问网站的时候,需要输人用户名密码才能顺利访问。一些比较重要的站点或者网站后台通常会加上用户认证,目的是保证安全。

    • 先对123.com站点做一个安全的用户认证 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容

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

      </Directory>

       ErrorLog "logs/111.com-error_log"

       CustomLog "logs/111.com-access_log" common

    </VirtualHost>

    • 创建密码文件:

    /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming  

    htpasswd命令为创建用户的工具,-c为create(创建),-m指定密码加密方式为MD5,

    /data/.htpasswd为密码文件,aming为要创建的用户。第一次执行该命令需要加-c。第二次再创建新的用户时,就不用加了-c,否则/data/.htpasswq文件会被重置,之前的用户被清空

    • 重新加载配置-t , graceful

    • 绑定hosts,浏览器测试

    配置完成后,需要到宿主机(你的真实电脑Windows)上去修改一下hosts文件,类似Linux上的 etc/hosts,把111.com域名指向你的这台Linux机器,这样才能通过浏览器访问到111.com。 Windows上的hosts文件所在路径为C:WindowsSystem32dnversetchosts:

    192.168.37.101  111.com

    • curl -x127.0.0.1:80 111.com    //状态码为401,说明访问的内容需要用户认证

    curl -x127.0.0.1:80 111.com –I   //查看状态码信息

    • curl -x127.0.0.1:80 -uaming:123456 111.com     //状态码为200,-u是输入用户名,:是输入密码

    • 还可以针对单个文件进行认证

    vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf   //把111.com那个虚拟主机编辑成如下内容

    <VirtualHost *:80>

       DocumentRoot "/data/wwwroot/111.com"

       ServerName 111.com

       ServerAlias www.example.com

       #<Directory /data/wwwroot/111.com>  

       <FilesMatch 123.php>

           AllowOverride AuthConfig

           AuthName "111.com user auth"

           AuthType Basic

           AuthUserFile /data/.htpasswd

           require valid-user

       </FilesMatch>

       #</Directory>

       ErrorLog "logs/111.com-error_log"

       CustomLog "logs/111.com-access_log" common

    </VirtualHost>

    vim /data/wwwroot/111.com/123.php

    直接访问不需要输入用户名和密码,状态码是200

    访问123.php时状态码出现401  //我们对123.php做了限制。要指定用户名和密码。

    11.19/11.20 域名跳转

    用www.lishiming.net访问的时候,浏览器里面的网址直接变成了ask.apelearn.com这其实就是域名的跳转过程。做域名跳转有什么用呢?主要有两方面的作用:

    第一 ,一个站点有多个域名会对SEO有影响,说白了就是百度搜索关键词的排名有影响,如果把多个域名全部跳转到指定的一个域名,这样以这个域名为中心,就可以把权重集中在这个域名上,所以搜索关键词的排名也就靠前了;

    第二,如果之前的某个域名不再使用了,但是搜索引擎还留着之前老域名的链接,这意味着用户可能会搜到我们的网站并且点击老的域名,固需要把老域名做个跳转跳到新域名,这样用户搜的时候,也可以访问到网站。

    需求,把123.com域名跳转到www.123.com,配置如下:

    <VirtualHost *:80>

       DocumentRoot "/data/wwwroot/111.com"

       ServerName 111.com

       ServerAlias www.example.com

       #<Directory /data/wwwroot/111.com>  

       #<FilesMatch 123.php>

       #   AllowOverride AuthConfig

       #   AuthName "111.com user auth"

       #   AuthType Basic

       #   AuthUserFile /data/.htpasswd

       #   require valid-user

       #</FilesMatch>

       #</Directory>

      <IfModule mod_rewrite.c> //需要mod_rewrite模块支持

           RewriteEngine on  //打开rewrite功能

           RewriteCond %{HTTP_HOST} !^111.com$  //定义rewrite的条件,主机名(域名)不是111.com满足条件    

           RewriteRule ^/(.*)$ http://111.com/$1  //定义rewrite规则,当满足上面的条件时,这条规则才会执行

       </IfModule>

       ErrorLog "logs/111.com-error_log"

       CustomLog "logs/111.com-access_log" common

    </VirtualHost>

    在RewriteRule里是有正则表达式存在的,RewriteRu1e后面由空格划分成三部分,第一部分为当前的URL(也就是网址),不过这个URL是不把主机头(也就是域名)算在内的。第二部分为要跳转的目标地址,这个地址可以写全(包含了主机头),当然也可以不加主机头,默认就是前面定义的ServerName。第三部分为一些选项,需要用方括号括起来,301为状态码,它称作“永久重定向"(还有一种跳转用的状态码为302,叫作“临时重定向"),L表示"last",意思是跳转一次就结束了。

    以111.com/123.php为例:

    ^/表示不是111.com开头,(.*)表示是123.php ,跳转到http://111.com/,$1就是前面第一个(.*)这部分。每个()代表着一个整体, $1对应第一个小括号,$2对应第二个小括号

    • 检测和加载配置:

    • 要实现域名跳转,需要有rewrite模块支持,所以先查看httpd是否已经加载该模块,如果没有还需要配置:

    没有任何输出,说明没有加载该模块

    加载rewrite模块

    vi /usr/local/apache2.4/conf/httpd.conf

    LoadModule rewrite_module modules/mod_rewrite.so   //去掉行首的#

    • 测试

    查看状态码:301

    查看内容

    11.21 Apache访问日志

    访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题,比如当有攻击时,是可以通过查看日志看到一些规律的。要配置httpd访问日志,首先要在主配置文件中定义访问日志的格式,可以看到两个格式的日志,建议使用第一个,记录的信息会更全。

    访问日志记录用户的每一个请求

    日志位置:ls /usr/local/apache2.4/logs/

    查看实验机的日志内容:cat /usr/local/apache2.4/logs/111.com-access_log

    打开主配置文件:vim /usr/local/apache2.4/conf/httpd.conf   //搜索LogFormat,默认用的是common

    %h为访问网站的IP;

    %l为远程登录名,这个字段基本上为“ -" ;

    %u为用户名,当使用用户认证时,这个字段为认证的用户名 ;

    %t为时间 ;

    %r为请求的动作( 比如用curl -I时就为HEADE );

    %s为请求的状态码,写成%>s为最后的状态码;

    %b 为传输数据大小;

    %{Referer)i为referer信息(请求本次地址上一次的地址就为referer,比如在百度中搜索阿铭Linux,然后通过百度的搜索结果页面点击然后到了阿铭的论坛,那访问阿铭论坛的这次请求的referer就是baidu,当然那个地址肯定是很长的);

    %{User-Agent}i为浏览器标识,比如你用 Firefox或者Chrome浏览器,则该字段显示内容不一样,是带有浏览器的标识的。

    对于这个日志格式,你可以自定义调整各个字段的位置,也可以额外增加其他字段,比如可以增加%D(请求耗费时间)。在工作中并没有更改过它,默认的日志格式就够用

    • 编辑虚拟主机配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    CustomLog "logs/111.com-access_log" combined   //common更改为combined

    查看日志文件:cat /usr/local/apache2.4/logs/111.com-access_log

  • 相关阅读:
    Netflix Ribbon(负载均衡)介绍
    Annotation 注解
    框架设计的灵魂-反射
    idea maven java.lang.outofmemoryerror gc overhead limit exceeded
    洛谷P4427 [BJOI2018]求和
    洛谷P1196 [NOI2002]银河英雄传说
    CF191C Fools and Roads
    洛谷P2296 寻找道路
    洛谷P3389 【模板】高斯消元法
    洛谷P1351 联合权值
  • 原文地址:https://www.cnblogs.com/pta188/p/9105566.html
Copyright © 2011-2022 走看看