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

Apache用户认证

介绍:Apache用户认证也叫httpd的用户认证,这个功能是在用户访问网站的时候,需要输入用户名密码才能访问

普通用户认证

ps:后面的操作都是我们做了默认虚拟主机后 进行的实验 步骤 : 1.修改配置文件(根据自己需求来,别总是无脑复制粘贴)

#进入配置文件目录
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 
#修改第二个虚拟主机的配置文件,内容如下
DocumentRoot "/data/wwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    <Directory /data/wwroot/111.com>//指定认证的目录
        AllowOverride AuthConfig//这个相当于打开认证的开关
        AuthName "111.com user auth" //自定义认证的名字,作用不大
        AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
        AuthUserFile /data/.htpasswd//指定密码文件所在位置
        require valid-user//指定需要认证的用户为全部可用用户
    </Directory>// 是这个以上的 下面是错误日志目录什么的

</VirtualHost>

2.生成用户名和密码

#生成用户名和密码 ,/data/.htpasswd是密码所在目录,-c就是创建
[root@centos001 ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming
New password: 
Re-type new password: //如果两次输入的密码不一样会报错
Adding password for user aming

正常的生成就和上面一样,这里我们cat密码文件所在目录的时候出现了一个字符串,是因为我们在生成的时候,使用了-m选项 ,它的意思是指定加密类型 。

[root@centos001 ~]# ls /data/.htpasswd
/data/.htpasswd
[root@centos001 ~]# cat !$
cat /data/.htpasswd
aming:$apr1$U4ET9SZV$ddKI5/2z1iKMGiMj3DSkK/
#当再次增加一个用户的时候就不需要-c了
[root@centos001 ~]# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd xiaowei
New password: 
Re-type new password: 
Adding password for user xiaowei
[root@centos001 ~]# cat /data/.htpasswd
aming:$apr1$U4ET9SZV$ddKI5/2z1iKMGiMj3DSkK/
xiaowei:$apr1$tri9uAul$SFEs7w3uh/5ZXmDynEYoq.
  1. 检查书写并重启服务
#检查书写
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
AH00112: Warning: DocumentRoot [/data/wwwroot/111.com] does not exist
Syntax OK
#提示说我们指定的 目录不存在,那就创建一个咯
[root@centos001 ~]# mkdir /data/wwwroot/
[root@centos001 ~]# mkdir /data/wwwroot/111.com
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
#重启服务
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl graceful

测试

  • 首先到windos下更改hosts文件
    这里显示401 表示需要用户认证,就是正确的
  • 输错密码的时候也会显示401
[root@centos001 ~]# curl -x192.168.10.120:80 111.com -I
HTTP/1.1 401 Unauthorized
Date: Mon, 25 Dec 2017 23:59:01 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
  • 然后输入用户名和密码,显示200 ok 就是正确的

这里卡了好一会儿,一直报错403 ,后来重做了一下 就好了 。应该还是配置文件问题

 [root@centos001 ~]# curl -x192.168.10.120:80 -uaaa:123 111.com -I
HTTP/1.1 200 OK
Date: Tue, 26 Dec 2017 04:49:34 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

单个文件认证

  • 主机上又是需要给特殊的文件设置认证,防止不相关用户访问 1.更改配置文件
[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 
#改成这样
<VirtualHost *:80>
    DocumentRoot "/data/wwroot/111.com"	
    ServerAlias www.example.com
    ServerName 111.com
    # <Directory /data/wwroot/111.com> 把这个注释掉
      <FilesMatch 123.php> //重点
 AllowOverride AuthConfig
        AuthName "111.com user auth"
        AuthType Basic 
        AuthUserFile /data/.htpasswd
        require valid-user
      <FilesMatch>
   #</Directory>

2.我们指定了需要认证的文件,但它还是空的没有就写一个

[root@centos001 ~]# vim /data/wwroot/111.com/123.php
#内容随便写写就行

3.检查语法并重启

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

测试

  • 现在用户登录不用验证了,但是访问特定的文件的时候就需要验证了
[root@centos001 ~]# curl -x192.168.10.120:80 111.com 
111.com[root@centos001 ~]#
#访问指定文件,提示401
[root@centos001 ~]# curl -x192.168.10.120:80 111.com/123.php -I
HTTP/1.1 401 Unauthorized
Date: Tue, 26 Dec 2017 05:22:04 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

配置域名跳转

  • 介绍

一个网站有多个域名,而用其中一个域名访问网站,会转到这个网站。这个过程叫做域名跳转 域名跳转的作用:
1.对seo有影响,可以理解为搜索排名,越多排名越高
2.比如一个域名不用了,但是有用户啊,用域名跳转就能,让这些使用原来链接的用户跳转过去

步骤

  • 需求
    把123.com域名跳转到www.123.com,配置如下
<VirtualHost *:80>
    DocumentRoot "/data/wwroot/111.com"	
    ServerAlias www.example.com 211.com
    ServerName 111.com
    <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规则,当满足上面的条件时,这条规则才会执行
#301表示永久跳转,L表示只跳转一次

    </IfModule>

    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
  • 检查并重启服务
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
/usr/local/apache2.4/bin/apachectl graceful
  • 检查有没有加载rewrite模块,这个像报错一样的东西不怎么影响结果,可能是个警告吧
[root@centos001 ~]# /usr/local/apache2/bin/apachectl -M |grep rewrite
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe34:4a63 for ServerName
Syntax OK
# 如果位加载的话就去下面加载一下
[root@centos001 ~]# vim /usr/local/apache2.4/conf/httpd.conf

输入图片说明

  • 测试用另一个域名访问,得到的结果是301(永久跳转)。用浏览器访问也是直接跳转到111.com
[root@centos001 ~]# curl -x192.168.10.120:80 www.example.com -I
HTTP/1.1 301 Moved Permanently
Date: Tue, 26 Dec 2017 06:37:23 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1

配置访问日志

  • 介绍

访问日志的作用很大,不仅能记录网站的访问情况,还能在网站有异常的时候帮我们定位问题,比如有攻击时,能通过查看日至看到一些问题

  • 先来查看日志
#查看访问日志所在文件目录
 cat /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
#在这个目录下,根据虚拟主机配置文件,我们能得到,访问日志所在目录,直接cat就能看到
[root@centos001 ~]# ls /usr/local/apache2.4/logs/
111.com-access_log  abc.com-access_log  access_log          httpd.pid
111.com-error_log   abc.com-error_log   error_log           
[root@centos001 ~]# ls /usr/local/apache2.4/logs/111.com-error_log
/usr/local/apache2.4/logs/111.com-error_log
[root@centos001 ~]# cat !$
cat /usr/local/apache2.4/logs/111.com-error_log

输入图片说明

编辑配置

上面的文件 看起来很不方便,而且记录的数据还太多,很多都用不上。下面我们将要学习,怎么更直观的

  • 1.主配置文件中定义访问日志的格式
#//进入主配置文件,搜索LogFormat 
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

解说:

两个格式的日志,建议选择第一个,信息记录更全面。 %h为访问网站的IP;%l为远程登录名;%u为用户名,使用认证登录时,就是认证的用户名;%t为时间;%r为请求动作;%s为请求的状态码,%>s为最后的状态码;%b为传输数据的大小;%{Referer}意为由什么地址过来的;%{User-Agent}i为浏览器标识

  • 2.编辑虚拟主机配置文件 让访问日志显示
#进入虚拟主机配置文件
[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

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

3.查看新的访问日志建议先用浏览器跳转几下
这里能看到很多重要的东西 访问地址 源地址 访问设备 浏览器都知道是什么

#查看
[root@centos001 ~]# tail /usr/local/apache2.4/logs/111.com-access_log
#输出
192.168.10.120 - - [26/Dec/2017:16:26:56 +0800] "HEAD HTTP://www.example.com/ HTTP/1.1" 30
192.168.10.1 - aaa [26/Dec/2017:16:27:30 +0800] "GET / HTTP/1.1" 200 7 "-" "Mozilla/5.0 (W9.84 Safari/537.36"
···

扩展

apache虚拟主机开启php的短标签
http://ask.apelearn.com/question/5370

猜你喜欢

转载自my.oschina.net/u/3707523/blog/1595238
今日推荐