介绍:Apache用户认证也叫httpd的用户认证,这个功能是在用户访问网站的时候,须要输入用户名密码才能访问php
ps:后面的操做都是咱们作了默认虚拟主机后 进行的实验 步骤 : 1.修改配置文件(根据本身需求来,别老是无脑复制粘贴)html
#进入配置文件目录 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.生成用户名和密码apache
#生成用户名和密码 ,/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选项 ,它的意思是指定加密类型 。vim
[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.
#检查书写 [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
[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
这里卡了好一下子,一直报错403 ,后来重作了一下 就行了 。应该仍是配置文件问题centos
[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
[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.检查语法并重启dom
[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.好比一个域名不用了,可是有用户啊,用域名跳转就能,让这些使用原来连接的用户跳转过去curl
<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
[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
[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
访问日志的做用很大,不只能记录网站的访问状况,还能在网站有异常的时候帮咱们定位问题,好比有攻击时,能经过查看日至看到一些问题ide
#查看访问日志所在文件目录 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
上面的文件 看起来很不方便,并且记录的数据还太多,不少都用不上。下面咱们将要学习,怎么更直观的学习
#//进入主配置文件,搜索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为浏览器标识
#进入虚拟主机配置文件 [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