Apache用户认证、域名跳转及Apache访问日志

httpd的用户认证目录

  • vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //把123.com那个虚拟主机编辑成以下内容php

    <VirtualHost *:80>html

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

        ServerName www.123.comvim

        <Directory /data/wwwroot/www.123.com> //指定认证的目录浏览器

            AllowOverride AuthConfig //这个至关于打开认证的开关安全

            AuthName "123.com user auth" //自定义认证的名字,做用不大dom

            AuthType Basic //认证的类型,通常为Basic,其余类型阿铭没用过ssh

            AuthUserFile /data/.htpasswd  //指定密码文件所在位置curl

            require valid-user //指定须要认证的用户为所有可用用户tcp

        </Directory>

    </VirtualHost>

    • /usr/local/apache2/bin/htpasswd -c -m /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. 编辑vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 文件 

[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf在文件中编辑配置文件,将如下内容添加到第二段代码中——>由于第一个虚拟主机是默认虚拟主机

<Directory /data/wwwroot/www.111.com> //指定认证的目录 

AllowOverride AuthConfig //这个至关于打开认证的开关,若是没有这一行,那就至关于没有开启 AuthName "111.com user auth" //自定义认证的名字,做用不大 

AuthType Basic //认证的类型,通常为Basic,其余类型几乎没用过

AuthUserFile /data/.htpasswd //指定密码文件所在位置——>这里须要指定一个用户名的密码文件 require valid-user //指定须要认证的用户为所有可用用户 

</Directory>

更改完的代码 <VirtualHost *:80>

DocumentRoot "/data/wwwroot/abc.com"

ServerName abc.com

ServerAlias www.abc.com www.123.com

ErrorLog "logs/abc.com-error_log"

CustomLog "logs/abc.com-access_log" common

</VirtualHost>

<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

AuthUserFile /data/.htpasswd
require valid-user

</Directory>

ErrorLog "logs/111.com-error_log"

CustomLog "logs/111.com-access_log" common

</VirtualHost>

而后保存退出

2,用apache自带的命令htpasswd建立
-  /usr/local/apache2/bin/htpasswd -c -m /data/.htpasswd liyueyong 
    - -c参数,就是建立
    -m参数,使用MD5加密
    - /data/.htpasswd,指定密码文件所在位置
    - useradd liyueyong,(这里的useradd 是不须要写的,直接写用户名就行)加一个用户名(密码为123456)

[root@yong-02 ~]# /usr/local/apache2/bin/htpasswd -c -m /data/.htpasswd liyueyong

New password: Re-type new password: Adding password for user liyueyong 

- 如果提示错误,那么先查看文件是否生成,而后查看文件内容,再去排查其余错误
3. 查看 /data/.htpasswd 文件内容
    能看到文件中有一行,以 : 冒号为分割。左边是用户名,右边是MD5加密的密码
    由于是用 -m 指定了加密的类型

  •  查看是否生成密码文件
[root@yong-02 ~]# cat /data/.htpasswd 
liyueyong:$apr1$FDmXiDe8$cZ4SWR67.lo5id8g0TbM71

 4. 再增长zhangsan用户,就不须要去 -c参数 建立了,由于已经建立过了(密码为123456)

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

 5. 查看文件内容,会发现又增长了一行密码

[root@yong-02 ~]# cat /data/.htpasswd 
liyueyong:$apr1$FDmXiDe8$cZ4SWR67.lo5id8g0TbM71
zhangsan:$apr1$R/2ZFTiZ$aKM.cAWjH/hY9M7n7I2iG0

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

[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t 
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful

 7. 测试,访问111.com的时候,会提示401状态码
    401状态码,说明访问的内容须要作用户认证

[root@yong-02 ~]# 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@yong-02 ~]# curl -x127.0.0.1:80 111.com -I 
HTTP/1.1 401 Unauthorized Date: Tue, 29 May 2018 21:34:22 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

192.168.180.135 www.abc.com www.123.com 111.com

9. 会发现须要输入用户名,和密码

### curl输入用户名和密码    - -u参数,而后加用户名,再:冒号密码

[root@yong-02 ~]# curl -x127.0.0.1:80 -uliyueyong:123456 111.com -I
HTTP/1.1 200 OK
Date: Tue, 29 May 2018 15:23:11 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

## 针对某一个访问的进行认证
- 针对 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  vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

未更改前

<VirtualHost *:80> 

DocumentRoot "/data/wwwroot/abc.com" 

ServerName abc.com 

ServerAlias www.abc.com www.123.com 

ErrorLog "logs/abc.com-error_log" 

CustomLog "logs/abc.com-access_log" common 

</VirtualHost>

<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 

AuthUserFile /data/.htpasswd 

require valid-user 

</Directory> 

ErrorLog "logs/111.com-error_log" 

CustomLog "logs/111.com-access_log" common 

</VirtualHost>

更改后

<VirtualHost *:80> 

DocumentRoot 

"/data/wwwroot/abc.com" 

ServerName abc.com 

ServerAlias www.abc.com www.123.com 

ErrorLog "logs/abc.com-error_log" 

CustomLog "logs/abc.com-access_log" common 

</VirtualHost>

<VirtualHost *:80> 

DocumentRoot "/data/wwwroot/111.com" 

ServerName 111.com 

ServerAlias www.example.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@yong-02 ~]# /usr/local/apache2/bin/apachectl -t 
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful

3. 编辑123.php文件 

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

在配置文件中写入

<?php echo "123.php"; 并保存退出 

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

[root@yong-02 ~]# curl -x127.0.0.1:80 111.com -I

HTTP/1.1 200 OK
Date: Tue, 29 May 2018 15:39:47 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Length: 7
Content-Type: text/html; charset=UTF-8
 

5. 可是在访问123.php的时候,会提示401,这是由于针对123.php作了一个限制

[root@yong-02 ~]# curl -x127.0.0.1:80 111.com/123.php -I
HTTP/1.1 401 Unauthorized
Date: Tue, 29 May 2018 15:40:19 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1
 

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

[root@yong-02 ~]# curl -x127.0.0.1:80 -uliyueyong:123456 111.com/123.php -I
HTTP/1.1 200 OK
Date: Tue, 29 May 2018 15:42:07 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

 

域名跳转

  • 需求,把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状态码的做用。

域名跳转配置文件介绍

  • 加入到配置文件的内容
<IfModule mod_rewrite.c>
       #须要mod_rewrite模块支持
        RewriteEngine on
       #打开rewrite功能
        RewriteCond %{HTTP_HOST} !^111.com$
       #定义rewrite的条件,主机名(域名)不是111.com知足条件
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
       #定义rewrite规则,当知足上面的条件时,这条规则才会执行
      </IfModule>
  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/(.)
  • 这个 R=301,L 在跳转完成后还须要加一个R=301状态码,L 表示只跳转一次结束
  • 301是永久重定向
  • 302是临时重定向,临时重定向在搜索引擎不太友好,它会认为仅仅是临时的,不过把原来域名的权重下降

域名重定向实验操做

  • 打开虚拟主机配置文件,并修改配置文件
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 

更改前
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

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

更改后
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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 [R=301,L]
       #定义rewrite规则,当知足上面的条件时,这条规则才会执行
      </IfModule>

    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

而后保存退出
  • 检测修改的配置文件是否存在语法错误
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
  • 从新加载配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 在测试前,先检查是否加载了rewrite模块
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -M |grep rewrite
  • 这里会看到并无加载rewrite模块,因此还须要到配置文件中打开rewrite模块
  • 若是没有加载,还须要打开rewrite模块,由于在编译的时候指定了most,因此rewrite模块必定存在
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

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

LoadModule rewrite_module modules/mod_rewrite.so
而后保存退出
  • 检测修改的配置文件是否存在语法错误,并从新加载配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t 
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 再来查看rewrite模块
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -M |grep rewrite
 rewrite_module (shared)
  • 查看虚拟主机配置文件
[root@yong-02 ~]# cat /usr/local/apache2/conf/extra/httpd-vhosts.conf 
# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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> 
       #须要mod_rewrite模块支持
        RewriteEngine on 
       #打开rewrite功能
        RewriteCond %{HTTP_HOST} !^111.com$  
       #定义rewrite的条件,主机名(域名)不是111.com知足条件
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] 
       #定义rewrite规则,当知足上面的条件时,这条规则才会执行
      </IfModule>
   
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
  • 开始测试
  • curl -x可使用127.0.0.1也能够是192.168.180.135 进行测试,由于80端口监听的是全网 什么是监听全网
    • 全网,就是这台主机上全部的网卡的IP
  • 80端口默认是:::80,表示监听全网
[root@yong-02 ~]# 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      1019/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1254/master         
tcp6       0      0 :::80                   :::*                    LISTEN      1352/httpd          
tcp6       0      0 :::22                   :::*                    LISTEN      1019/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1254/master
  • 在虚拟主机中添加2111.com.cn ,而后在从新检查语法错误,在加载配置文件
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t 
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 访问2111.com.cn
  • curl -x192.168.180.135:80 2111.com.cn -I
    • -I参数,表示不显示内容,只看状态码
[root@yong-02 ~]# curl -x192.168.180.135:80 2111.com.cn -I
HTTP/1.1 301 Moved Permanently
Date: Tue, 29 May 2018 16:23:52 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1
  • 会看到状态码为301
  • 查看2111.com.cn网站的内容
[root@yong-02 ~]# curl -x192.168.180.135: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://111.com/">here</a>.</p>
</body></html>
  • 在域名后面随便添加字符,最后仍是跳转到111.com
[root@yong-02 ~]# curl -x192.168.180.135:80 2111.com.cn/dsfasdfasd
<!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://111.com/dsfasdfasd">here</a>.</p>
</body></html>
  • 去访问随便输入字符的网站,会显示404状态码
  • 404状态码,表示这个页面不存在
  • 401状态码,表示用户名密码验证的。若是验证不对,就是401状态码;验证对了,就是200状态码
[root@yong-02 ~]# curl -x192.168.180.135:80 http://111.com/dsfasdfasd -I
HTTP/1.1 404 Not Found
Date: Tue, 29 May 2018 16:25:39 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

 

Apache访问日志

访问日志目录概要

  • 访问日志记录用户的每个请求
  • vim /usr/local/apache2/conf/httpd.conf //搜索LogFormat
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
  • 把虚拟主机配置文件改为以下:
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 123.com
    CustomLog "logs/123.com-access_log" combined
</VirtualHost>
  • 从新加载配置文件/usr/local/apache2/bin/apachectl  -t,graceful
  • curl -x127.0.0.1:80 -I 123.com
  • tail /usr/local/apache2/logs/123.com-access_log

访问日志

  • 访问日志,就是在浏览器中输入网址,每一次访问,每一次请求,都会生成一个日志
  • 查看apache2.4的日志
[root@yong-02 ~]# ls /usr/local/apache2/logs/
abc.com-access_log  access_log                          dummy-host2.example.com-error_log  httpd.pid
abc.com-error_log   dummy-host2.example.com-access_log  error_log
  • 查看111.com访问日志 dummy-host2.example.com-access_log(没更名致使)
    • 日志里面的HEAD都是curl命令致使的
    • 日志里面的GET就是不加 -I参数的,在加上-I只会输出状态码,并不会把内容GET下来
    • 日志里面包含 来源的IP,时间 , 行为 ,访问的域名 , HTTP的版本1.1 ,状态码 , 大小
[root@yong-02 ~]# tail /usr/local/apache2/logs/dummy-host2.example.com-access_log 
192.168.180.135 - - [30/May/2018:00:12:03 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
192.168.180.135 - - [30/May/2018:00:13:38 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 -
192.168.180.135 - - [30/May/2018:00:23:52 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
192.168.180.135 - - [30/May/2018:00:24:13 +0800] "GET HTTP://2111.com.cn/ HTTP/1.1" 301 223
192.168.180.135 - - [30/May/2018:00:24:38 +0800] "GET HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 233
192.168.180.135 - - [30/May/2018:00:25:12 +0800] "HEAD HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 -
192.168.180.135 - - [30/May/2018:00:25:39 +0800] "HEAD http://111.com/dsfasdfasd HTTP/1.1" 404 -
192.168.180.1 - liyueyong [30/May/2018:00:26:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:26:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:26:56 +0800] "GET /123.php HTTP/1.1" 200 7

定义日志文件格式

  • 上面输出的日志太过简单,不是咱们所须要的日志格式,日志其实能够自定义格式的
  • 打开主配置文件
  • 默认使用的是common
  • %h,来源IP
  • %l,用户
  • %u,用户名和密码
  • %t,时间
  • %r,行为和网站
  • %>s,网站状态码
  • %b,页面大小
  • {Referer}i 表示访问页面的上一个所访问的页面
  • %{User-Agent}i 表示用户代理,是经过浏览器访问,仍是curl命令访问,最终得到网站的内容,浏览器就是用户代理
[root@yong-02 ~]# vim /usr/local/apache2/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
  • 打开虚拟机配置文件
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 

未更改前
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

更改后,将common 改成 combined 

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" combined
</VirtualHost>
  • 检查配置文件是否存在语法错误,并重启配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 使用curl命令访问网址
[root@hf-01 ~]# curl -x192.168.202.150:80 http://111.com123.php -I
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 13:50: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@hf-01 ~]#
  • 再用浏览器访问下网址

  • 查看日志文件
  • 会看到日志文件丰富了
[root@yong-02 ~]# tail /usr/local/apache2/logs/dummy-host2.example.com-access_log 
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:13 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:13 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - liyueyong [30/May/2018:00:46:14 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:46:18 +0800] "GET /123.php HTTP/1.1" 200 7
  • 测试{Referer}i ,在论坛新建一个笔记,测试网址,加入本身的测试连接,并在日志中打开本身的测试连接
  • 再来查看日志文件,会看到生成了{Referer}i
[root@yong-02 ~]# !tail 
tail /usr/local/apache2/logs/dummy-host2.example.com-access_log  
192.168.180.135 - - [30/May/2018:00:49:43 +0800] "HEAD HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 -
192.168.180.135 - - [30/May/2018:00:49:45 +0800] "GET HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 233
192.168.180.135 - - [30/May/2018:00:49:50 +0800] "GET HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 233
192.168.180.135 - - [30/May/2018:00:49:50 +0800] "GET HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 233
192.168.180.1 - liyueyong [30/May/2018:00:49:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:49:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:49:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:49:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - - [30/May/2018:00:49:56 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - liyueyong [30/May/2018:00:49:58 +0800] "GET /123.php HTTP/1.1" 200 7
相关文章
相关标签/搜索