通常状况咱们访问网站的时候并不须要用户认证,可是当网站上某些网页只想提供给指定的用户访问时,能够经过用户认证来实现。 下面这个示例是在虚拟主机配置文件中作的,#用户认证下面的是配置的内容php
<VirtualHost *:80> DocumentRoot "/tmp/ccc.com" ServerName ccc.com ServerAlias www.ccc.com #用户认证 <Directory /tmp/ccc.com> 指定要认证的目录 AllowOverride AuthConfig 至关于打开认证的开关 AuthName "ccc.com user auth" 自定义认证名,意义不大 AuthType Basic 通常设定为basic就行 AuthUserfile /data/.htpasswd 指定密码文件所在位置 require valid-user 指定须要认证的用户为所有可用用户 </Directory> ErrorLog "ccc.com_log" CustomLog "ccc.com_log" common </VirtualHost>
/usr/local/apache/bin/apachectl -t
/usr/local/apache/bin/apachectl graceful
/usr/local/apache/bin/htpasswd -c -m /data/.htpasswd hello
其中-c是建立密码文件,-m是指定加密方式,hello是用户名。再次添加用户就不用-c选项了。cat /data/.htpasswd
htpasswd命令是Apache的Web服务器内置工具,用于建立和更新储存用户名、域和用户基本认证的密码文件。html
参数:算法
c:=create,建立一个加密文件apache
n:不更新加密文件,只将更新后的用户名密码显示在屏幕上vim
m:使用MD5算法对密码进行加密(默认)浏览器
d:使用CRYPT算法对密码进行加密服务器
p:不对密码进行加密,即明文密码curl
s:使用SHA算法对密码进行加密ide
b:在命令行一并输入用户名和密码,而不是根据提示输入密码工具
D:删除指定用户
编辑httpd配置文件/usr/local/apache2.4/conf/httpd.conf
<VirtualHost *:80> DocumentRoot "/tmp/abc.com" ServerName abc.com <FilesMatch kkk.php> 须要认证的文件,该文件须要在 DocumentRoot指定的目录下 AllowOverride AuthConfig AuthName "abc.com user auth" AuthType Basic AuthUserfile /data/.htpasswd require valid-user </FilesMatch> ErrorLog "abc.com_log" CustomLog "abc.com_log" common </VirtualHost>
<VirtualHost *:80> DocumentRoot "/tmp/abc.com" ServerName www.abc.com ServerAlias abc.com # 域名跳转 <IfModule mod_rewrite.c> # 须要mod_rewrite模块的支持 RewriteEngine on #打开rewrite功能 RewriteCond %{HTTP_HOST} !^www.abc.com$ #定义rewrite的条件,意思是域名不是www.abc.com的知足条件 RewriteRule ^/(.*)$ http://www.abc.com/$1 [R=301,L] #RewriteRule^/.(.*)$http://www.abc.com/$1 [R=301,L] #定义rewrite规则,当知足上面条件时,这条规则才生效 </IfModule> ErrorLog "abc.com_log" CustomLog "abc.com_log" common
[root@localhost ~]# curl -x127.0.0.1:80 -l 456.com <!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://www.abc.com/">here</a>.</p> </body></html>
每一次访问请求都会记录在日志中 Apache的访问日志的路径在Apache的安装路径下面/usr/local/apache/logs/下
access_log 访问日志,access_log为访问日志,记录全部对apache服务器进行请求的访问,它的位置和内容由CustomLog指令控制,LogFormat指令能够用来简化该日志的内容和格式
error_log 错误日志 error_log为错误日志,记录下任何错误的处理请求,它的位置和内容由ErrorLog指令控制,一般服务器出现什么错误,首先对它进行查阅,是一个最重要的日志文件。
系统自带两种日志格式:combine和common,默认使用common模式。 LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined LogFormat "%h %l %u %t "%r" %>s %b" common
h表示host来源IP
l表示login用户
u表示user用户名密码
t表示time时间,
r表示request行为(curl时,加I为head,不加Iget)
s表示status状态码,b表示byte大小
user-agent:用户代理(使用什么方式访问,浏览器或者curl命令或者其它)
referer:跳转到当前位置的上一个网址(即:提供当前IP的网站)