Apache用户认证

打开网站直接弹出输入用户名密码,正确了之后才能查看网站,这个叫Apache用户认证。

编辑配置文件(因为我们使用的是apache虚拟主机,所以进入虚拟主机的配置)
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

在配置文件里添加如下段
<Directory /data/wwwroot/yy.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "yy.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>

Apache用户认证、域名跳转、Apache访问日志_第1张图片

创建密码文件以及用户和密码
使用工具htpassswd进行创建,-c为创建,-m为MD5加密,创建一个kjj用户
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd kjj

New password: 输入密码
Re-type new password: 确认密码
Adding password for user kjj 提示增加成功

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

查看已经创建密码文件(密码是加密的)
cat /data/.htpasswd

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

更改完成后不要忘记检查配置文件是否正确以及重新加载配置文件
/usr/local/apache2.4/bin/apachectl -t 检查文件是否正确

/usr/local/apache2.4/bin/apachectl graceful 重新加载配置文件

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

我们使用浏览器进行验证

Apache用户认证、域名跳转、Apache访问日志_第2张图片

使用curl进行测试密码是否成功设置,-I只显示请求头信息,-u设置服务器的用户和密码
-u指定用户和密码,输入用户kjj,密码147258,提示200,表示正常访问
curl -x192.168.71.131:80 -ukjj:147258 111.com -I

Apache用户认证、域名跳转、Apache访问日志_第3张图片

针对单个的文件进行用户认证
有时候我们还会有一个只对单个文件进行认证。和前面的操作几乎一样,但是唯一不同的就会如下标出的位置。
编辑配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf hmy.php是需要认证的文件

 
        AllowOverride AuthConfig
        AuthName "yy.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    

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

在指定的目录下新建一个hmy.php进行测试
vim /data/wwwroot/yy.com/hmy.php

添加如下内容
echo "I LOVE YOU.php"; 内容随便写,测试而已

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

更改完成后记得检查配置文件是否正确以及重新加载配置文件(养成好习惯)
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

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

我们访问一下指定文件hmy.php

Apache用户认证、域名跳转、Apache访问日志_第4张图片


域名跳转

编辑虚拟主机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

在配置文件里添加以下内容
:80>
DocumentRoot "/data/wwwroot/yy.com"
ServerName kjj.com
ServerAlias www.kjj.com www.hmy.com
#需要mod_rewrite模块支持
RewriteEngine on #打开rewrite功能
RewriteCond %{HTTP_HOST} !^kjj.com$ #定义rewrite的条件,主机名(域名)不是kjj.com 的满足条件
RewriteRule ^/(.)$ http://kjj.com/$1 [R=301,L] #定义rewrite规则,当满足上面的条件时,这条规则才会执行,跳转至kjj.com,301表示永久跳转

ErrorLog "logs/yy.com-error_log"
CustomLog "logs/yy.com-access_log" common

Apache用户认证、域名跳转、Apache访问日志_第5张图片

更改完成后记得检查配置文件是否正确以及是否加载rewrite模块,重新加载apache
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl -M |grep rewrite
/usr/local/apache2.4/bin/apachectl graceful

Apache用户认证、域名跳转、Apache访问日志_第6张图片

如果没有加载rewrite模块,那么需要在配置文件里加载
vim /usr/local/apache2.4/conf/httpd.conf

打开配置文件后搜索关键字:rewrite 找到 LoadModule rewrite_module modules/mod_rewrite.so 将这一行前面的#号去掉即可。

Apache用户认证、域名跳转、Apache访问日志_第7张图片

使用curl进行测试
curl -x192.168.71.131:80 www.hmy.com -I #访问www.hmy.com

Apache用户认证、域名跳转、Apache访问日志_第8张图片

301表示永久跳转成功,Location: http://kjj.com/ 表示跳转kjj.com成功

状态403就是 vim /usr/local/apache2.4/conf/httpd.conf 里的 Require all denied 没有改成 Require all granted


Apache访问日志

访问日志记录用户的每一个请求
Apache日志的存放地址(apache默认日志存放目录)
ls /usr/local/apache2.4/logs/

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

access_log为访问日志,记录所有对apache服务器进行请求的访问,它的位置和内容由CustomLog指令控制,LogFormat指令可以用来简化该日志的内容和格式

error_log为错误日志,记录下任何错误的处理请求,它的位置和内容由ErrorLog指令控制,通常服务器出现什么错误,首先对它进行查阅,是一个最重要的日志文件

日志的格式
编辑Apache的主配置文件
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

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

第一行内容的意思
h:来源ip
l:用户
u:用户名密码
t:时间
r:行为网址
s:状态码
b:大小

第二行多了两个其他选项。
refere:浏览器访问这个网页前的网址
user-agent:用户代理,用户通过什么东西访问,比如浏览器,curl命令访问

更改日志的格式
编辑配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

打开配置文件后,搜索找到CustomLog,将后面的common更改为combined

DocumentRoot "/data/wwwroot/aaa.com"
ServerName aaa.com
ServerAlias www.aaa.comwww.123.com
ErrorLog "logs/aaa.com-error_log"
CustomLog "logs/aaa.com-access_log" common #将这里的common更改为combined即可