11.18Apache的用户认证
把相应参数copy进去第二个虚拟主机(为了不影响默认主机使用,所以选择了第二个虚拟主机)
//指定认证的目录 AllowOverride AuthConfig //这个相当于打开认证的开关 AuthName "123.com user auth" //自定义认证的名字,作用不大 AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过 AuthUserFile /data/.htpasswd //指定密码文件所在位置 require valid-user //指定需要认证的用户为全部可用用户
[root@Centos7-01 wwwroot]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改后
配置完成后,需要创建密码文件,
# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming
上条命令的解释:
htpasswd工具,-c创建,-m MD5加密,后接密码文件./htpasswd 再接用户。
[root@Centos7-01 wwwroot]# ls /data/.htpasswd /data/.htpasswd
可以cat密码文件,是一串暗码,是因为被MD5加密过。
[root@Centos7-01 wwwroot]# cat /data/.htpasswd aming:$apr1$5mmrMCOX$E0QY/azyYojxZy0jTlsxt1
*注意:如果需要再次增加用户,取消-c 因为-c是创建和生成,如果使用了-c会被覆盖掉。
[root@Centos7-01 wwwroot]# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd zhangsan
/usr/
设置完密码后,
重新加载配置-t , graceful
#curl检视信息,401表示此网页需要验证。
配置完成后,需要到真实机windows修改hosts文件(C:\Windows\System32\drivers\etc),把网址添加进去
登录正确账号密码则可验证成功
截图
如果想单独一个文件进行认证,可以这样做。
#vim /data/wwwroot/111.com/123.php
重新加载配置-t , graceful
完成后, 登录111.com/123.php 就需要认证,而111.com就不需要认证。
11.19 11.20 域名跳转
这个用法比较普遍,一个网站可能会有多个域名。
比如阿铭论坛可以用www.lishiming.net访问,也可以用ask.apelearn.com访问。而用www.lishiming.net访问时,浏览器直接跳转到ask.apelearn.com,这就是域名的跳转过程。
状态码:301表示永久重定向,永久跳转。
编译Apache的时候,其中有一项的值是most,其实意思就是把大多数都能使其加载。
而不同的功能需求就代表着不同的模块。
把这段参数复制到httpd-vhost里的虚拟主机上面,
//需要mod_rewrite模块支持 RewriteEngine on //打开rewrite功能 RewriteCond %{HTTP_HOST} !^111.com$ //定义rewrite的条件,主机名(域名)不是www.111.com满足条件,而我们刚好就设定了2个域名(111.com www.example.com)。 RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] //定义rewrite规则,当满足上面,/(.*)相当于111.com/123.php中的123.php R=301是表示状态码是301,L=last,L表示只跳一次。
检查状态,重新加载。检查模块,
[root@Centos7-01 ~]# /usr/local/apache2.4/bin/apachectl -t [root@Centos7-01 ~]# /usr/local/apache2.4/bin/apachectl grace [root@Centos7-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
如果模块没被过滤出来,则需要打开模块。
编辑httpd.conf,搜索/rewrite,把#去掉,打开模块。
LoadModule alias_module modules/mod_alias.so #LoadModule rewrite_module modules/mod_rewrite.so
再次检查状态,重新加载。检查模块,
[root@Centos7-01 ~]# /usr/local/apache2.4/bin/apachectl -t
[root@Centos7-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@Centos7-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
rewrite_module (shared)
状态码是301,跳转成功。
[root@Centos7-01 ~]# curl -x127.0.0.1:80 2111.com.cn -I
HTTP/1.1 301 Moved Permanently
Date: Sat, 14 Apr 2018 04:24:08 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1
11.21 配置访问日志
访问日志记录用户的每一个请求
访问日志目录,其中111.com-access_log 就是访问日志文件
[root@Centos7-01 ~]# ls /usr/local/apache2.4/logs/ 111.com-access_log access_log error_log 111.com-error_log dummy-host2.example.com-access_log httpd.pid 123.com-access_log dummy-host2.example.com-error_log 123.com-error_log dummy-host.example.com-access_log
#cat 111.com-access_log
HEAD的包 curl -I的包
GET是没有加-I的包
可以进入httpd.conf参考定义日志格式
通常使用第一种格式,combined
参数介绍
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 远程登录名,这个字段通常是"-"
%t 时间
%r 请求动作,比如 curl -I的时候是HEAD
%s 请求状态码,404 301....
%b 传输数据大小
% {Referer}i referer信息 上一次访问的信息,例如,登录了两个网页,第一个是baidu.com,在百度里搜索了阿铭论坛ask.apelearn.com,那么访问阿铭论坛的referer就是baidu了,通常这个信息地址是很长的。
% {User-Agent}i 浏览器标识,比如用firefox和Chrome是不一样的内容显示,使用curl也算在内。
%
配置定义格式,格式为combined
编辑httpd-vhost.conf
/usr/local/apache2.4/bin/apachectl -t Syntax OK /usr/local/apache2.4/bin/apachectl graceful
curl几次,浏览器打开网页,来回访问几次。
再cat日志查看日志信息。
#cat 111.com-access_log