设为首页 收藏本站
查看: 865|回复: 0

[经验分享] Apache用户认证、域名跳转、Apache访问日志介绍

[复制链接]

尚未签到

发表于 2018-11-18 06:11:55 | 显示全部楼层 |阅读模式
  Apache用户认证(针对目录)
  这个功能就是在用户访问网站的时候,需要输入用户密码才能顺利访问。一些比较重要的站点或者网站后台通常会加上用户认证,目的是保证安全。
  1.虚拟主机的配置文件:
  [root@gary-tao local]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf    编辑配置文件
  

  更改111.com的虚拟主机认证内容如下:
  
      DocumentRoot "/data/wwwroot/111.com"
      ServerName 111.com
      ServerAlias www.example.com
       //指定认证的目录   
          AllowOverride AuthConfig //这个相当于打开认证的开关
          AuthName "111.com user auth" //自定义认证的名字,作用不大
          AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
          AuthUserFile /data/.htpasswd  //指定密码文件所在位置
          require valid-user //指定需要认证的用户为全部可用用户
     
  
  

  最终保存文件,示例如下:
DSC0000.png

  2.Apache自带命令htpasswd创建密码文件
  [root@gary-tao local]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd xie   //创建用户密码文件
  New password:            //新建密码
  Re-type new password:      //新建密码
  Adding password for user xie
  [root@gary-tao local]# ls /data/.htpasswd  //查看密码文件
  /data/.htpasswd
  [root@gary-tao local]# cat /data/.htpasswd  //查看生成用户密码
  xie:$apr1$h/QEC7nC$hNNV080nvhSI2jWCQLt7M0
  [root@gary-tao local]# /usr/local/apache2.4/bin/htpasswd  -m /data/.htpasswd aming  //再增加一个用户
  New password:
  Re-type new password:
  Adding password for user aming
  [root@gary-tao local]# cat /data/.htpasswd  
  xie:$apr1$h/QEC7nC$hNNV080nvhSI2jWCQLt7M0
  aming:$apr1$At/pBlDA$4IYzNISYUew9ELrea5dP7.
  

  说明:
  -c:是创建;
  -m:是指定md5加密类型;
  指定用户为xie(PS:如果再次新增用户,就不需要再加-c ,因为已经创建过密码文件了);
  

  3.测试语法和加载配置文件
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
  

  4.测试配置是否成功
  访问111.com,出现401状态码,说明访问的这个域名需要用户认证。
  [root@gary-tao local]# curl -x127.0.0.1:80 111.com
  

  
  401 Unauthorized
  
  Unauthorized
  This server could not verify that you
  are authorized to access the document
  requested.  Either you supplied the wrong
  credentials (e.g., bad password), or your
  browser doesn't understand how to supply
  the credentials required.
  
  

  在本地windows系统里做hosts解析111.com,路径:C:\Windows\System32\drivers\etc,格式:172.16.111.100 111.com。
  

  定义完本地hosts后,用浏览器访问111.com网站时就会出现用户认证,用户密码就是刚才增加的用户和设置的密码
DSC0001.png

  5.使用curl -x输入用户名密码访问
  用法
  [root@gary-tao local]# curl -x127.0.0.1:80 -uxie:xie 111.com -I
  HTTP/1.1 200 OK
  Date: Wed, 20 Dec 2017 10:51:28 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  X-Powered-By: PHP/7.1.6
  Content-Type: text/html; charset=UTF-8
  说明:状态码变成200了,就是正常的,-u的作用是指定用户和密码。
  6.还可以针对单个文件进行认证(针对文件)
  示例内容:
  
      DocumentRoot "/data/wwwroot/www.123.com"
      ServerName www.123.com
        //跟上面的不同的是这行,上面是指定认证的目录,这里是指定单个文件。
          AllowOverride AuthConfig
          AuthName "123.com user auth"
          AuthType Basic
          AuthUserFile /data/.htpasswd
          require valid-user
        //这行也不同
  
  

  在配置文件修改成以下:
  
      DocumentRoot "/data/wwwroot/111.com"
      ServerName 111.com
      ServerAlias www.example.com
      #
     
          AllowOverride AuthConfig
          AuthName "111.com user auth"
          AuthType Basic
          AuthUserFile /data/.htpasswd
          require valid-user
     
      #
      ErrorLog "logs/111.com-error_log"
      CustomLog "logs/111.com-access_log" common
  
  

  更改完成后测试语法及重新加载配置文件:
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
  

  在111.com目录下编辑创建测试文件123.PHP。
  [root@gary-tao local]# vim /data/wwwroot/111.com/123.php
  

  用curl -x访问:
  [root@gary-tao local]# curl -x127.0.0.1:80 111.com -I //不用-u加用户和密码了,也可以访问,出现200状态码
  HTTP/1.1 200 OK
  Date: Wed, 20 Dec 2017 11:04:06 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  X-Powered-By: PHP/7.1.6
  Content-Type: text/html; charset=UTF-8
  [root@gary-tao local]# curl -x127.0.0.1:80 111.com/123.php -I //但是访问文件123.php时就出现401了,说明需要用户认证了
  HTTP/1.1 401 Unauthorized
  Date: Wed, 20 Dec 2017 11:04:17 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  WWW-Authenticate: Basic realm="111.com user auth"
  Content-Type: text/html; charset=iso-8859-1
  [root@gary-tao local]# curl -x127.0.0.1:80 -uxie:xie 111.com/123.php -I   //只有用-u加用户和密码才能正常访问123.php。
  HTTP/1.1 200 OK
  Date: Wed, 20 Dec 2017 11:04:38 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  X-Powered-By: PHP/7.1.6
  Content-Type: text/html; charset=UTF-8
  [root@gary-tao local]# curl -x127.0.0.1:80 -uxie:xie 111.com/123.php   //进入到文件里。
  123.php[root@gary-tao local]#
  [root@gary-tao local]#
  

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

  2.一个站点有多个域名会对SEO的排名有影响,如果把多个域名全部跳转到一个指定的域名,这样以这个域名为中心,就可以把权重集中在这个域名上,并给定义一个状态码为301,301叫作永久重定向。
  需求,把123.com域名跳转到www.123.com。
  1.编辑配置文件
  [root@gary-tao local]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  

  2.修改增加如下内容:
  
      DocumentRoot "/data/wwwroot/www.123.com"
      ServerName www.123.com
      ServerAlias 123.com
       //需要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规则,当满足上面的条件时,这条规则才会执行
  
  
  修改示例如下:
DSC0002.png

  3.检测语法及重新加载配置:
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
  

  4.检测apache是否加载了rewrite模块:
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite  //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#
  [root@gary-tao local]# vi /usr/local/apache2.4/conf/httpd.conf //进入配置文件,搜索rewrite,把前面#去掉
  

  示例如下:
DSC0003.png

   5.检测语法及重新加载配置,查看加载模块:
  
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite  //查看加载模块
   rewrite_module (shared)
  

  6.测试
  
  [root@gary-tao local]# curl -x 127.0.0.1:80  -I 2111.com.cn
  HTTP/1.1 301 Moved Permanently
  Date: Wed, 20 Dec 2017 12:31:50 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  Location: http://111.com/
  Content-Type: text/html; charset=iso-8859-1
  [root@gary-tao local]# curl -x 127.0.0.1:80   2111.com.cn //看内容
  
  
  301 Moved Permanently
  
  Moved Permanently
  The document has moved here.
  
  [root@gary-tao local]# curl -x 127.0.0.1:80   2111.com.cn/adfjadfa/adfdafadfaf -I
  HTTP/1.1 301 Moved Permanently
  Date: Wed, 20 Dec 2017 12:34:05 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  Location: http://111.com/adfjadfa/adfdafadfaf
  Content-Type: text/html; charset=iso-8859-1
  [root@gary-tao local]# curl -x 127.0.0.1:80 http://111.com/adfjadfa/adfdafadfaf -I
  HTTP/1.1 404 Not Found
  Date: Wed, 20 Dec 2017 12:35:08 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  Content-Type: text/html; charset=iso-8859-1
  [root@gary-tao local]# curl -x 127.0.0.1:80 http://111.com/123.php -I
  HTTP/1.1 200 OK
  Date: Wed, 20 Dec 2017 12:36:35 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  X-Powered-By: PHP/7.1.6
  Content-Type: text/html; charset=UTF-8
  [root@gary-tao local]# vi /usr/local/apache2.4/conf/httpd.conf
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
  [root@gary-tao local]# curl -x 127.0.0.1:80 http://111.com/123.php -I
  HTTP/1.1 403 Forbidden
  Date: Wed, 20 Dec 2017 12:39:23 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  Content-Type: text/html; charset=iso-8859-1
  

  说明:
-I       不显示访问内容,只看状态码
404    这个页面不存在
301    永久跳转
401    用户密码验证,密码验证不对就401,验证对了就200
403    把granted改成denied就会403

  

  Apache访问日志
  访问日志的作用很大,不仅可以记录网站的访问日志,还可以在网站有异常发生时帮助我们定位问题,比如有***时,是可以通过查看日志看到一些规律的.日志记录了很多系统的信息,通过读日志,可以找到系统问题的原因。而日志有不同的格式,分为common和combined,combined可以记录更多的信息。
  1.查看默认配置文件日志
  [root@gary-tao local]# ls /usr/local/apache2.4/logs/
  111.com-access_log  111.com-error_log  abc.com-access_log  abc.com-error_log  access_log  error_log  httpd.pid
  [root@gary-tao local]# ls /usr/local/apache2.4/logs/111.com-access_log
  /usr/local/apache2.4/logs/111.com-access_log
  [root@gary-tao local]# cat /usr/local/apache2.4/logs/111.com-access_log
  172.16.111.1 - xie [20/Dec/2017:20:09:54 +0800] "GET / HTTP/1.1" 200 12
  127.0.0.1 - - [20/Dec/2017:20:31:50 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
  127.0.0.1 - - [20/Dec/2017:20:32:53 +0800] "GET HTTP://2111.com.cn/ HTTP/1.1" 301 223
  127.0.0.1 - - [20/Dec/2017:20:34:05 +0800] "HEAD HTTP://2111.com.cn/adfjadfa/adfdafadfaf HTTP/1.1" 301 -
  127.0.0.1 - - [20/Dec/2017:20:35:08 +0800] "HEAD http://111.com/adfjadfa/adfdafadfaf HTTP/1.1" 404 -
  127.0.0.1 - - [20/Dec/2017:20:36:35 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
  127.0.0.1 - - [20/Dec/2017:20:39:23 +0800] "HEAD http://111.com/123.php HTTP/1.1" 403 -
  127.0.0.1 - - [20/Dec/2017:20:40:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
  2.介绍日志配置文件格式
  
  [root@gary-tao local]# vim /usr/local/apache2.4/conf/httpd.conf
   LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
   LogFormat "%h %l %u %t \"%r\" %>s %b" common
  

  内容示例如下:
DSC0004.png

  访问日志记录用户的每一个请求说明如下:
  %h:为访问网站的IP;
  %l:为访问远程登录名,这个字段基本上为"-";
  %u:为用户名,当使用用户认证时,这个字段为认证的用户名;
  %t:为时间;
  %r:为请求的动作(比如用ctrl-I是就为HEADE);
  %s:为请求的状态,写成%>s为最后的状态码;
  %b:为传输数据大小;
  %{Referer}i:为referer信息(请求本次地址上一次的地址就为referer,比如在百度中搜索阿铭linux,然后通过百度的搜索结果页面点击然后到了阿名的论坛,那访问阿铭的论坛的这次请求的referer就是baidu,当然那个地址肯定是很长的);
  %{User-Agent}i:为浏览器标识,比如你用Firefox或者Chrome浏览器,则该字段显示内容不一样,是带有浏览器的标识的。
  

  3.定义虚拟主机配置文本日志格式:
  [root@gary-tao local]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //进入配置文件
  

  把common日志格式格式改成comdined日志格式,示例如下:
DSC0005.png

  

  4.测试语法及重新加载配置
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  [root@gary-tao local]# /usr/local/apache2.4/bin/apachectl graceful
  

  5.做几个操作命令后查看日志
  [root@gary-tao local]# !curl
  curl -x 127.0.0.1:80 http://111.com/123.php -I
  HTTP/1.1 200 OK
  Date: Wed, 20 Dec 2017 13:10:16 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  X-Powered-By: PHP/7.1.6
  Content-Type: text/html; charset=UTF-8
  [root@gary-tao local]# curl -x 127.0.0.1:80 http://111.com/123.php -I
  HTTP/1.1 200 OK
  Date: Wed, 20 Dec 2017 13:10:31 GMT
  Server: Apache/2.4.29 (Unix) PHP/7.1.6
  X-Powered-By: PHP/7.1.6
  Content-Type: text/html; charset=UTF-8
  [root@gary-tao local]# tail /usr/local/apache2.4/logs/111.com-access_log
  127.0.0.1 - - [20/Dec/2017:20:34:05 +0800] "HEAD HTTP://2111.com.cn/adfjadfa/adfdafadfaf HTTP/1.1" 301 -
  127.0.0.1 - - [20/Dec/2017:20:35:08 +0800] "HEAD http://111.com/adfjadfa/adfdafadfaf HTTP/1.1" 404 -
  127.0.0.1 - - [20/Dec/2017:20:36:35 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
  127.0.0.1 - - [20/Dec/2017:20:39:23 +0800] "HEAD http://111.com/123.php HTTP/1.1" 403 -
  127.0.0.1 - - [20/Dec/2017:20:40:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
  127.0.0.1 - - [20/Dec/2017:21:10:16 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
  127.0.0.1 - - [20/Dec/2017:21:10:31 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
  172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
  172.16.111.1 - xie [20/Dec/2017:21:10:38 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"
  172.16.111.1 - xie [20/Dec/2017:21:10:39 +0800] "GET / HTTP/1.1" 200 12 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636309-1-1.html 上篇帖子: Apache与PHP的结合配置、Apache默认虚拟主机 下篇帖子: CentOS 7.4——Apache应用之一,构建Web虚拟目录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表