十周三次课

十周三次课

11.18Apache用户认证

11.19/11.20域名跳转

11.21Apache访问日志

11.18Apache用户认证

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>

• /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 //状态码为200

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

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    <FilesMatch admin.php>

        AllowOverride AuthConfig

        AuthName "123.com user auth"

        AuthType Basic

        AuthUserFile /data/.htpasswd

        require valid-user

    </FilesMatch>

</VirtualHost>

 httpd的用户认证

浏览器在打开一个网站,什么页面都不显示,只弹出一个对话框,让你输入用户名和密码,只有输入正确才能访问网站的内容 。

 需求:abc.com这个网站访问的时候,不能直接访问,必须输入用户名和密码,验证通过之后才能访问网站内容

这样做的目的是增加安全性,但是劣势是用户体验很差,因为每个人要访问网站都必须输入用户名和密码。

1. 虚拟主机的配置文件:

编辑配置文件

[root@tianqi-01 ~]# 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>

然后保存退出

2.Apache自带命令htpasswd创建密码文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd tianqi
New password: 
Re-type new password: 
Adding password for user tianqi
[root@tianqi-01 ~]# 

说明:

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

若是提示错误,那么先查看文件是否生成,然后查看文件内容,再去排查其他错误。

3.查看 /data/.htpasswd 文件内容 - 能看到文件中有一行,以 : 冒号为分割。

左边是用户名,右边是MD5加密的密码 ,因为是用 -m 指定了加密的类型。

[root@tianqi-01 ~]# cat /data/.htpasswd 
tianqi:$apr1$awcjrqIN$5lD3DZBm9WWMyJV3jJEAs.
[root@tianqi-01 ~]# 

4. 再增加zhangsan用户,就不需要去 -c参数 创建了,因为已经创建过了(密码为123456)

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd zhangsan
New password: 
Re-type new password: 
Adding password for user zhangsan

5. 查看文件内容,会发现又增加了一行密码
[root@tianqi-01 ~]# cat /data/.htpasswd
tianqi:$apr1$awcjrqIN$5lD3DZBm9WWMyJV3jJEAs.
zhangsan:$apr1$POkg5UqP$YJSvyCCgajf2ArL45E.fc.
[root@tianqi-01 ~]# 

6. 查看配置文件是否有错误,并重新加载配置文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# 

7.测试,访问111.com的时候,会提示401状态码 

401状态码,说明访问的内容需要做用户认证。

[root@tianqi-01 ~]# curl -x127.0.0.1:80 111.com

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>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.</p>
</body></html>
[root@tianqi-01 ~]# 

[root@tianqi-01 ~]# curl -x127.0.0.1:80 111.com -I
HTTP/1.1 401 Unauthorized
Date: Thu, 01 Mar 2018 12:39:45 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@tianqi-01 ~]# 

8.同样可以在浏览器中输入111.com——>前提是要先在物理机中hosts文件定义111.com。

192.168.11.136 www.abc.com www.123.com 111.com

9. 定义完本地hosts后,用浏览器访问111.com网站时就会会发现需要输入用户名和密码

10. 在输入用户名和密码,用户密码就是刚才增加的用户和设置的密码

11. 会发现正常访问到页面了

12. 这个就是用户认证

### curl输入用户名和密码

curl -x127.0.0.1:80 -utianqi:123456 111.com -I

-u参数,然后加用户名,再:冒号密码

[root@tianqi-01 ~]# curl -x127.0.0.1:80 -utianqi:123456 111.com -I
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2018 13:53:19 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@tianqi-01 ~]# 

这时会发现状态码改变了,状态码变成了200(200即为正常)

若是输错密码,那么状态码又会变成401

[root@tianqi-01 ~]# curl -x127.0.0.1:80 -utianqi:23456 111.com -I
HTTP/1.1 401 Unauthorized
Date: Thu, 01 Mar 2018 13:55:38 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@tianqi-01 ~]# 

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

针对 admin.php文件 只有打开这个文件才会执行下面的操作

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    <FilesMatch admin.php>  //跟上面的不同的是这行,上面是指定认证的目录,这里是指定单个文件。
        AllowOverride AuthConfig
        AuthName "123.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </FilesMatch>  //这行也不同
</VirtualHost>

这里和前面的用户认证唯一不同的就是,使用的是 FilesMatch ,当访问的文件匹配到admin.php的时候,它才去执行以下的配置,而前面的用户认证使用的Directory,指定了一个目录,只要是这个目录下面的都会去认证,这里是FilesMatch ,匹配这个文件的。

1. 更改配置文件,注释掉Directory,去使用FilesMatch 

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

  • 在配置文件修改成以下:

<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>

2.检查配置文件是否存在语法错误,并重新加载配置文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# 

3.编辑123.php文件

[root@tianqi-01 ~]# vim /data/wwwroot/111.com/123.php

在配置文件中写入

<?php
echo "123.php";

保存退出

4.检查是否能访问网站,这里会看到不加-u 也能访问到网站,状态码也是200,而不是401了

[root@tianqi-01 ~]# curl -x127.0.0.1:80 -utianqi:123456 111.com
111.com[root@tianqi-01 ~]# curl -x127.0.0.1:80  111.com
111.com[root@tianqi-01 ~]# curl -x127.0.0.1:80  111.com -I
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2018 14:11:39 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@tianqi-01 ~]# 

5.但是在访问123.php的时候,会提示401,这是因为针对123.php做了一个限制

[root@tianqi-01 ~]# curl -x127.0.0.1:80  111.com/123.php -I
HTTP/1.1 401 Unauthorized
Date: Thu, 01 Mar 2018 14:12:53 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@tianqi-01 ~]# 

6.这时候-u指定用户名和密码,就可以访问123.php了

[root@tianqi-01 ~]# curl -x127.0.0.1:80  -utianqi:123456 111.com/123.php -I
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2018 14:13:57 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@tianqi-01 ~]# 

11.19/11.20域名跳转

域名跳转

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

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    ServerAlias 123.com

    <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规则,当满足上面的条件时,这条规则才会执行

</IfModule>

</VirtualHost>

• /usr/local/apache2/bin/apachectl -M|grep -i rewrite //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#

• curl -x127.0.0.1:80 -I 123.com //状态码为301

域名跳转的作用有两点:

域名跳转,常用于老域名跳转到新域名,因为老用户已经习惯记住一个域名了,突然页面换到了新的域名,就需要做这个操作。一个域名就是一个网站的名称,就可以通过域名访问到该网站,因为域名涉及到一个SEO,SEO会对网站的内容进行一个价值权重定义,旧网站价值高,会一直存在各大搜索引擎,会对新网站产生不可预料的影响,所以为了让老用户和搜索引擎把重心转移到新网站,所以就需要做一个老域名跳转到新域名的操作。SEO涉及到一个排名,网站的排名越高,在搜索引擎排名就越靠前,而这个权重是根据网站的页面数量来判定的,搜索引擎认为该网站比较有价值,就会提升该网站权重,而它判断网站是根据域名来的,在搜索引擎眼里,一个网站是根据域名来判断的。若一个网站有A、B两个域名可以同时访问,那搜索引擎会认为第二个B域名是一个冒牌货,所以搜索引擎会把高权重给第一个A域名,低权重给第二个B域名。而为了解决这种问题,把一个网站A域名跳转到另一个网站B域名上,提升跳转到的那个域名的权重,并且定义一个301的状态码。

301状态码叫做永久重定向、永久跳转。永久跳转,搜索引擎认为A网站不用了,就可以把A网站的权重降下去,然后把所有权重加到B网站上去,这就是301状态码的作用。

域名跳转配置文件介绍 

1.编辑配置文件的内容

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<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功能,on就是打开 
        RewriteCond %{HTTP_HOST} !^111.com$    //定义rewrite的条件,主机名(域名)不是111.com满足条件
         RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]    //定义rewrite规则,当满足上面的条件时,这条规则才会执行
</IfModule>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log"  common
</VirtualHost>

        1. mod_rewrite模块,在编译apache的时候用到了一个most,most会把大多数模块编译进来;如果没有用most,没有加任何的编译参数,那mod_rewrite模块也不会出现

        2. 定义rewrite的条件,主机名(域名)不是111.com满足条件。当域名不是111.com的时候,就会跳转到111.com,也就是说现在以111.com为主域名,它的权重大一点。如果不是 ! 叹号,表示取反的意思。HOST就是定义的域名,111.com就是HOST。!^111.com$,表示以111开头的,到com结尾的,这样定义是为了包含111.com也会匹配

        3. 这个^/(.*)$ 理解为: 非域名以外剩下的部分, / 斜杠表示域名后面的斜杠,(.*)就是 / 斜杠后的所有, $表示结束语句。

凡是以 ^/(.*)$ 域名的都会跳转到 http://111.com/(.*),例如:^/(.*)/([1-9]+)$ 跳转就可以写成 http://111.com/$1/$2 - 这个 R=301,L 在跳转完成后还需要加一个R=301状态码,L 表示只跳转一次结束 - 301是永久重定向 - 302是临时重定向,临时重定向在搜索引擎不太友好,它会认为仅仅是临时的,不过把原来域名的权重降低。

2.检测修改的配置文件是否存在语法错误

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

3.重新加载配置文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# 

4.在测试前,先检查是否加载了rewrite模块

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
[root@tianqi-01 ~]# 

5. 这里会看到并没有加载rewrite模块,所以还需要到配置文件中打开rewrite模块 

6. 如果没有加载,还需要打开rewrite模块,因为在编译的时候指定了most,所以rewrite模块一定存在 

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf 

搜索/rewrite ,找到这一行,并将前面的# 号去掉,显示为

LoadModule rewrite_module modules/mod_rewrite.so

7.检测修改的配置文件是否存在语法错误,并重新加载配置文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# 

8.再来查看rewrite模块

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
 rewrite_module (shared)
[root@tianqi-01 ~]# 

9.查看虚拟主机配置文件

[root@tianqi-01 ~]# cat /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

10.开始测试 curl -x可以使用127.0.0.1也可以是192.168.11.136 进行测试,因为80端口监听的是全网。 

什么是监听全网,就是这台主机上所有的网卡的IP,80端口默认是:::80,表示监听全网。

[root@tianqi-01 ~]# netstat -lntp 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      767/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      999/master          
tcp6       0      0 :::80                   :::*                    LISTEN      12084/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      767/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      999/master          
[root@tianqi-01 ~]# 

11. 在虚拟主机中添加2111.com.cn ,然后在重新检查语法错误,在加载配置文件

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com 2111.com.cn
   # <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>
   RewriteEngine on
   RewriteCond %{HTTP_HOST} !^111.com$
   RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
   </IfModule>

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# 

12.访问2111.com.cn

curl -x192.168.11.136:80 2111.com.cn -I - -I参数,表示不显示内容,只看状态码

[root@tianqi-01 ~]# curl -x192.168.11.136:80 2111.com.cn -I
HTTP/1.1 301 Moved Permanently
Date: Fri, 02 Mar 2018 13:34:59 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Location: http://www.123.com/
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

13.会看到状态码为301

14. 查看2111.com.cn网站的内容

[root@tianqi-01 ~]# curl -x192.168.11.136:80 2111.com.cn
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.123.com/">here</a>.</p>
</body></html>
[root@tianqi-01 ~]# 

15.在域名后面随便添加字符,最后还是跳转到111.com

[root@tianqi-01 ~]# curl -x192.168.11.136:80 2111.com.cn/adfjadfa/adfdafadfaf -I
HTTP/1.1 301 Moved Permanently
Date: Fri, 02 Mar 2018 13:49:08 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Location: http://www.123.com/adfjadfa/adfdafadfaf
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

16. 去访问随便输入字符的网站,会显示404状态码

404状态码,表示这个页面不存在

401状态码,表示用户名密码验证的。如果验证不对,就是401状态码;验证对了,就是200状态码

[root@tianqi-01 ~]# curl -x192.168.11.136:80 http://111.com/adfjadfa/adfdafadfaf -I

HTTP/1.1 404 Not Found

Date: Wed, 20 Dec 2017 23:42:08 GMT

Server: Apache/2.4.29 (Unix) PHP/5.6.30

Content-Type: text/html; charset=iso-8859-1

17.验证正确,就会出现200验证码

[root@tianqi-01 ~]# curl -x127.0.0.1:80 http://111.com/123.php -I
HTTP/1.1 200 OK
Date: Sat, 03 Mar 2018 06:15:07 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@tianqi-01 ~]# 

18.修改配置文件,将将granted改成denied,就会出现403验证码

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf

//搜索granted,将granted改成denied

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

//检测语法错误,并重新加载配置文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

[root@tianqi-01 ~]#  /usr/local/apache2.4/bin/apachectl graceful

[root@tianqi-01 ~]# curl -x192.168.11.136:80 http://111.com/123.php -I
HTTP/1.1 403 Forbidden
Date: Sun, 04 Mar 2018 01:48:51 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

19.修改配置文件,重新将denied改为granted,检测语法错误并重新加载配置文件,就会出现200验证码

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf
[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK
[root@tianqi-01 ~]#  /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# !curl

curl -x192.168.11.136:80 http://111.com/123.php -I
HTTP/1.1 200 OK
Date: Sun, 04 Mar 2018 01:53:10 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@tianqi-01 ~]# 

//说明:

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

11.21Apache访问日志

Apache访问日志

访问日志,就是在浏览器中输入网址,每一次访问,每一次请求,都会在服务器上生成一个日志。

访问日志的作用很大,不仅可以记录网站的访问日志,还可以在网站有异常发生时帮助我们定位问题,比如有攻击时,是可以通过查看日志看到一些规律的。日志记录了很多系统的信息,通过读日志,可以找到系统问题的原因。而日志有不同的格式,分为common和combined,combined可以记录更多的信息。

1.查看默认配置文件日志

[root@tianqi-01 ~]# 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@tianqi-01 ~]# ls /usr/local/apache2.4/logs/111.com-access_log
/usr/local/apache2.4/logs/111.com-access_log
[root@tianqi-01 ~]# cat /usr/local/apache2.4/logs/111.com-access_log 
192.168.11.136 - - [02/Mar/2018:20:46:38 +0800] "GET HTTP://www.example.com/ HTTP/1.1" 200 7
192.168.11.136 - - [02/Mar/2018:20:47:29 +0800] "GET HTTP://www.example.com/ HTTP/1.1" 200 7
127.0.0.1 - - [03/Mar/2018:13:49:11 +0800] "GET HTTP://111.com/ HTTP/1.1" 401 381
127.0.0.1 - - [03/Mar/2018:13:49:20 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 401 -
192.168.11.1 - tianqi [03/Mar/2018:13:49:37 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:14 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:16 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:17 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:17 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:18 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:18 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:18 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:18 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:19 +0800] "GET / HTTP/1.1" 200 7
127.0.0.1 - tianqi [03/Mar/2018:13:51:35 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 200 -
127.0.0.1 - tianqi [03/Mar/2018:13:52:04 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 401 -
127.0.0.1 - tianqi [03/Mar/2018:13:56:38 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 7
127.0.0.1 - - [03/Mar/2018:13:56:56 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 7
127.0.0.1 - - [03/Mar/2018:13:57:05 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 200 -
127.0.0.1 - - [03/Mar/2018:13:57:45 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 401 -
127.0.0.1 - tianqi [03/Mar/2018:13:58:26 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 -
192.168.11.136 - - [03/Mar/2018:14:12:59 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
192.168.11.136 - - [03/Mar/2018:14:13:13 +0800] "GET HTTP://2111.com.cn/ HTTP/1.1" 301 223
192.168.11.136 - - [03/Mar/2018:14:13:27 +0800] "HEAD HTTP://2111.com.cn/adfjadfa/adfdafadfaf HTTP/1.1" 301 -
192.168.11.136 - - [03/Mar/2018:14:13:44 +0800] "HEAD http://111.com/adfjadfa/adfdafadfaf HTTP/1.1" 404 -
127.0.0.1 - - [03/Mar/2018:14:15:07 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
[root@tianqi-01 ~]# 

查看111.com访问日志,日志里面的HEAD都是curl命令导致的,日志里面的GET就是不加-I参数的,再加上-I只会输出状态码,并不会把内容GET下来。

日志里面包含来源的IP、时间、行为、访问的域名、HTTP的版本1.1、状态码以及大小。

上面输出的日志太过简单,不是我们所需要的日志格式,日志其实可以自定义格式的。

1. 打开主配置文件

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf

//不更改信息 搜索 /LogFormat ,看到的就是文件格式,这里提供了两个文件的格式,默认使用的是common 

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

默认使用的是common

%h,来源IP

%l,用户

%u,用户名和密码

%t,时间

%r,行为和网址

%>s,状态码

%b,页面大小

另外一种形式除了显示以上的内容,还显示下面的内容。

{Referer}i 表示访问页面的上一个所访问的页面

%{User-Agent}i 表示用户代理,是通过浏览器访问,还是curl命令访问,最终获得网站的内容,浏览器就是用户代理。

2. 打开虚拟机配置文件 

[root@tianqi-01 ~]#  vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

//把common日志格式格式改成combined日志格式,示例如下:

CustomLog "logs/111.com-access_log" combined

3. 检查配置文件是否存在语法错误,并重启配置文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# 

4. 使用curl命令访问网址

[root@tianqi-01 ~]# curl -x192.168.11.136:80 http://111.com/123.php -I
HTTP/1.1 200 OK
Date: Sat, 03 Mar 2018 06:31:24 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@tianqi-01 ~]# 

5. 再用浏览器访问下网址

[root@tianqi-01 ~]# curl -x 127.0.0.1:80 http://111.com/123.php -I
HTTP/1.1 200 OK
Date: Sat, 03 Mar 2018 06:35:36 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

6.查看日志文件 - 会看到日志文件丰富了

[root@tianqi-01 ~]# tail /usr/local/apache2.4/logs/111.com-access_log
127.0.0.1 - - [03/Mar/2018:13:56:56 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 7
127.0.0.1 - - [03/Mar/2018:13:57:05 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 200 -
127.0.0.1 - - [03/Mar/2018:13:57:45 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 401 -
127.0.0.1 - tianqi [03/Mar/2018:13:58:26 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 -
192.168.11.136 - - [03/Mar/2018:14:12:59 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
192.168.11.136 - - [03/Mar/2018:14:13:13 +0800] "GET HTTP://2111.com.cn/ HTTP/1.1" 301 223
192.168.11.136 - - [03/Mar/2018:14:13:27 +0800] "HEAD HTTP://2111.com.cn/adfjadfa/adfdafadfaf HTTP/1.1" 301 -
192.168.11.136 - - [03/Mar/2018:14:13:44 +0800] "HEAD http://111.com/adfjadfa/adfdafadfaf HTTP/1.1" 404 -
127.0.0.1 - - [03/Mar/2018:14:15:07 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
127.0.0.1 - - [03/Mar/2018:14:35:36 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
[root@tianqi-01 ~]# 

友情链接:阿铭Linux

猜你喜欢

转载自my.oschina.net/u/3744518/blog/1628056