十周三次课

摘要:摘要: Apache用户认证、 域名跳转

1、Apache用户认证

httpd的用户认证

•vim/usr/local/apache2.4/conf/extra/httpd-vhosts.conf//把123.com那个虚拟主机编辑成如下内容

<VirtualHost*:80>

DocumentRoot"/data/wwwroot/www.123.com"

ServerNamewww.123.com

<Directory/data/wwwroot/www.123.com>//指定认证的目录

AllowOverrideAuthConfig//这个相当于打开认证的开关

AuthName"123.comuserauth"//自定义认证的名字,作用不大

AuthTypeBasic//认证的类型,一般为Basic,其他类型阿铭没用过

AuthUserFile/data/.htpasswd//指定密码文件所在位置

requirevalid-user//指定需要认证的用户为全部可用用户

002UASMrzy7605pjKJv15&690.jpg

</Directory>

</VirtualHost>

•/usr/local/apache2.4/bin/htpasswd-cm/data/.htpasswdaming

•重新加载配置-t,graceful

•绑定hosts,浏览器测试

•curl-x127.0.0.1:80www.123.com//状态码为401

•curl-x127.0.0.1:80-uaming:passwdwww.123.com//状态码为200

 

•还可以针对单个文件进行认证

<VirtualHost*:80>

DocumentRoot"/data/wwwroot/www.123.com"

ServerNamewww.123.com

<FilesMatchadmin.php>

AllowOverrideAuthConfig

AuthName"123.comuserauth"

AuthTypeBasic

AuthUserFile/data/.htpasswd

requirevalid-user

</FilesMatch>

</VirtualHost>

实例:

设置认证的名字。

 

-c:是创建密码文件,-m:是指定密码文件存放目录,

 

密码文件的存放目录。

 

查看密码文件。显示空的原因?输入的密码两次都不一样。

 

左边是域名。右边是密码。

 

另创建一个用户。

 

重新加载一次,查看上面的操作是否有误。

 

显示401?原因访问的诱用户需要做用户认证。

 

分文正常:显示200

 

 

 


11.19/11.20域名跳转

•需求,把123.com域名跳转到www.123.com,配置如下:

<VirtualHost*:80>

DocumentRoot"/data/wwwroot/www.123.com"

ServerNamewww.123.com

ServerAlias123.com

<IfModulemod_rewrite.c>//需要mod_rewrite模块支持

RewriteEngineon//打开rewrite功能

RewriteCond%{HTTP_HOST}!^www.123.com$//定义rewrite的条件,主机名(域名)不是www.123.com满足条件

RewriteRule^/(.*)$http://www.123.com/$1[R=301,L]//定义rewrite规则,当满足上面的条件时,这条规则才会执行

</IfModule>

</VirtualHost>

•/usr/local/apache2/bin/apachectl-M|grep-irewrite//若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module(shared)前面的#

•curl-x127.0.0.1:80-I123.com//状态码为301

 

 


11.21Apache访问日志

•访问日志记录用户的每一个请求

•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

•把虚拟主机配置文件改成如下:

<VirtualHost*:80>

DocumentRoot"/data/wwwroot/www.123.com"

ServerNamewww.123.com

ServerAlias123.com

CustomLog"logs/123.com-access_log"combined

</VirtualHost>

•重新加载配置文件-t,graceful

•curl-x127.0.0.1:80-I123.com

•tail/usr/local/apache2.4/logs/123.com-access_log

 

 

常见问提:

 

 

答案:重新检查了虚拟主机配置文件用户认证配置那块,在定义认证目录路径和document定义路径不一致,把都修改为111.com就行了,之前多了个www