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>
创建密码文件以及用户和密码
使用工具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 提示增加成功
查看已经创建密码文件(密码是加密的)cat /data/.htpasswd
更改完成后不要忘记检查配置文件是否正确以及重新加载配置文件/usr/local/apache2.4/bin/apachectl -t
检查文件是否正确
/usr/local/apache2.4/bin/apachectl graceful
重新加载配置文件
我们使用浏览器进行验证
使用curl进行测试密码是否成功设置,-I只显示请求头信息,-u设置服务器的用户和密码
-u指定用户和密码,输入用户kjj,密码147258,提示200,表示正常访问
curl -x192.168.71.131:80 -ukjj:147258 111.com -I
针对单个的文件进行用户认证
有时候我们还会有一个只对单个文件进行认证。和前面的操作几乎一样,但是唯一不同的就会如下标出的位置。
编辑配置文件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
在指定的目录下新建一个hmy.php进行测试vim /data/wwwroot/yy.com/hmy.php
添加如下内容
echo "I LOVE YOU.php"; 内容随便写,测试而已
更改完成后记得检查配置文件是否正确以及重新加载配置文件(养成好习惯)/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
我们访问一下指定文件hmy.php
域名跳转
编辑虚拟主机配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在配置文件里添加以下内容
DocumentRoot "/data/wwwroot/yy.com"
ServerName kjj.com
ServerAlias www.kjj.com www.hmy.com
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
更改完成后记得检查配置文件是否正确以及是否加载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
如果没有加载rewrite模块,那么需要在配置文件里加载vim /usr/local/apache2.4/conf/httpd.conf
打开配置文件后搜索关键字:rewrite 找到 LoadModule rewrite_module modules/mod_rewrite.so 将这一行前面的#号去掉即可。
使用curl进行测试curl -x192.168.71.131:80 www.hmy.com -I
#访问www.hmy.com
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/
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
第一行内容的意思
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即可