apache用户认证

[root@localhost htdocs]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/apeng.com"

    ServerName www.apeng.com

    ServerAlias www.aling.com www.axin.com

    ErrorLog "logs/apeng.com-error_log"

    CustomLog "logs/apeng.com-access_log" common

    <Directory /data/wwwroot/apeng.com>

        AllowOverride AuthConfig

        AuthName "www.apeng.com user auth"

        AuthType Basic

        AuthUserFile /data/.htpasswd

        require valid-user

    </Directory>

</VirtualHost>

# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd apeng

# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd aming

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

# /usr/local/apache2.4/bin/apachectl graceful

# curl -x127.0.0.1:80 www.apeng.com    //提示用户认证

Linux-LAMP-用户认证,域名跳转,日志_配置

# curl -x127.0.0.1:80 -uapeng aling.com    //访问成功

Linux-LAMP-用户认证,域名跳转,日志_配置 _02

在浏览器中访问(在hosts文件中添加相应的ip与域名对应关系)

Linux-LAMP-用户认证,域名跳转,日志_LAMP_03

输入用户名和密码即可访问


Linux-LAMP-用户认证,域名跳转,日志_LAMP_04

Linux-LAMP-用户认证,域名跳转,日志_LAMP_05

Linux-LAMP-用户认证,域名跳转,日志_配置 _06

Linux-LAMP-用户认证,域名跳转,日志_LAMP_07


域名跳转

搜索引擎,如百度,谷歌,有道

如:你在百度里搜索linux,就会出现很多关于linux关键字的相关信息的链接,就是因为百度的蜘蛛,它的一些小程序来到了你服务器上抓走了这个页面,放到百度服务器的数据库里,从百度数据库里搜索到了linux相关网站,百度服务器把这个网站的链接传送给了用户。

一个网站有两个域名可以访问,百度认为你的第二个域名是一个冒牌货,所以百度给第一个域名的权重值高一点,排名就会靠前一点。

这时可将第一个域名作一个跳转,在百度排名里,第二个域名的权重值就会高一点,搜索时就会靠前一点,就会容易找到。

  1. 查看apache是否加载了rewrite模块/usr/local/apache2.4/bin/apachectl -M|grep rewrite

  2. vim /usr/local/apache2.4/conf/httpd.conf // #LoadModule rewrite_module modules/mod_rewrite.so去掉前面的"#"

  3. vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    Linux-LAMP-用户认证,域名跳转,日志_配置 _08

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

  5. # curl -x127.0.0.1:80 www.rewrite1.com -I

    Linux-LAMP-用户认证,域名跳转,日志_配置 _09

    这样可以让访问www.rewrite1.com与www.rewrite2.com 时跳转到www.rewrite.com,状态码为301(域名永久跳转)

访问日志

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

# vim /usr/local/apache2.4/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

日志文件路径中哪里呢?

ErrorLog "logs/rewrite.com-error_log"

CustomLog "logs/rewrite.com-access_log" common

把虚拟主机配置文件改成如下:

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/rewrite.com"

    ServerName www.rewrite.com

    ServerAlias www.rewrite1.com www.rewrite2.com

    ErrorLog "logs/rewrite.com-error_log"

    CustomLog "logs/rewrite.com-access_log" combined

        <IfModule mod_rewrite.c>

                RewriteEngine on

                REwriteCond %{HTTP_HOST} !^www.rewrite.com$

                RewriteRule ^/(.*)$ http://www.rewrite.com/$1 [R=301,L]

        </IfModule>

</VirtualHost>

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

# curl -x127.0.0.1:80 www.rewrite2.com

#  tail /usr/local/apache2.4/logs/rewrite.com-access_log

点击http://www.aming1.com/test.php

Linux-LAMP-用户认证,域名跳转,日志_LAMP_10

 \"%{Referer}i\"====="http://blog.51cto.com/13480443/2072927"

\"%{User-Agent}i\"===="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"


访问日志不记录指定类型的文件

网站大多元素为静态文件,如图片,css,js等,这些元素可以不用记录

把虚拟主机配置文件改成如下

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/rewrite.com"

    ServerName www.rewrite.com

    ServerAlias www.rewrite1.com www.rewrite2.com

    ErrorLog "logs/rewrite.com-error_log"

        SetEnvIf Request_URI ".*\.gif$" img

        SetEnvIf Request_URI ".*\.jpg$" img

        SetEnvIf Request_URI ".*\.png$" img

        SetEnvIf Request_URI ".*\.bmp$" img

        SetEnvIf Request_URI ".*\.swf$" img

        SetEnvIf Request_URI ".*\.js$" img

        SetEnvIf Request_URI ".*\.css$" img

        #<IfModule mod_rewrite.c>

        #       RewriteEngine on

        #       REwriteCond %{HTTP_HOST} !^www.rewrite.com$

        #       RewriteRule ^/(.*)$ http://www.rewrite.com/$1 [R=301,L]   

        #</IfModule>

    CustomLog "logs/rewrite.com-access_log" combined env=!img

</VirtualHost>

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

# curl -x127.0.0.1:80 www.rewrite2.com/123.js

#  tail /usr/local/apache2.4/logs/rewrite.com-access_log(发现没有记录访问123.js的日志)


访问日志的切割

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/rewrite.com-access_%Y%m%d.log 86400" combined env=!img

/usr/local/apache2.4/bin/rotatelogs   //httpd自带的一个切割工具

-l //以当前系统的时间为基准,如果不指定-l(以utc为基准去切割时间)

rewrite.com-access_%Y%m%d.log是一个变量(日志名)

以天为单位切割(一天为86400秒)

combined 日志格式

env=!img排除以img标识的文件