标签:Linux学习
十周三次课(3月2日)11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志
11.18 Apache用户认证
这个功能就是在用户访问网站的时候,需要输人用户名密码才能顺利访问。一些比较重要的站点或者网站后台通常会加上用户认证,目的是保证安全。
先对123.com站点做一个安全的用户认证 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.example.com
<Directory /data/wwwroot/111.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "111.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
创建密码文件:
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming
htpasswd命令为创建用户的工具,-c为create(创建),-m指定密码加密方式为MD5,
/data/.htpasswd为密码文件,aming为要创建的用户。第一次执行该命令需要加-c。第二次再创建新的用户时,就不用加了-c,否则/data/.htpasswq文件会被重置,之前的用户被清空
重新加载配置-t , graceful
绑定hosts,浏览器测试
配置完成后,需要到宿主机(你的真实电脑Windows)上去修改一下hosts文件,类似Linux上的 etc/hosts,把111.com域名指向你的这台Linux机器,这样才能通过浏览器访问到111.com。 Windows上的hosts文件所在路径为C:\Windows\System32\dnvers\etc\hosts:
192.168.37.101 111.com
curl -x127.0.0.1:80 111.com //状态码为401,说明访问的内容需要用户认证
curl -x127.0.0.1:80 111.com –I //查看状态码信息
curl -x127.0.0.1:80 -uaming:123456 111.com //状态码为200,-u是输入用户名,:是输入密码
还可以针对单个文件进行认证
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.example.com
#<Directory /data/wwwroot/111.com>
<FilesMatch 123.php>
AllowOverride AuthConfig
AuthName "111.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
#</Directory>
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
vim /data/wwwroot/111.com/123.php
直接访问不需要输入用户名和密码,状态码是200
访问123.php时状态码出现401 //我们对123.php做了限制。要指定用户名和密码。
11.19/11.20 域名跳转
用www.lishiming.net访问的时候,浏览器里面的网址直接变成了ask.apelearn.com这其实就是域名的跳转过程。做域名跳转有什么用呢?主要有两方面的作用:
第一 ,一个站点有多个域名会对SEO有影响,说白了就是百度搜索关键词的排名有影响,如果把多个域名全部跳转到指定的一个域名,这样以这个域名为中心,就可以把权重集中在这个域名上,所以搜索关键词的排名也就靠前了;
第二,如果之前的某个域名不再使用了,但是搜索引擎还留着之前老域名的链接,这意味着用户可能会搜到我们的网站并且点击老的域名,固需要把老域名做个跳转跳到新域名,这样用户搜的时候,也可以访问到网站。
需求,把123.com域名跳转到www.123.com,配置如下:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.example.com
#<Directory /data/wwwroot/111.com>
#<FilesMatch 123.php>
# AllowOverride AuthConfig
# AuthName "111.com user auth"
# AuthType Basic
# AuthUserFile /data/.htpasswd
# require valid-user
#</FilesMatch>
#</Directory>
<IfModule mod_rewrite.c> //需要mod_rewrite模块支持
RewriteEngine on //打开rewrite功能
RewriteCond %{HTTP_HOST} !^111.com$ //定义rewrite的条件,主机名(域名)不是111.com满足条件
RewriteRule ^/(.*)$ http://111.com/$1 //定义rewrite规则,当满足上面的条件时,这条规则才会执行
</IfModule>
ErrorLog "logs/111.com-error_log"
CustomLog "logs/111.com-access_log" common
</VirtualHost>
在RewriteRule里是有正则表达式存在的,RewriteRu1e后面由空格划分成三部分,第一部分为当前的URL(也就是网址),不过这个URL是不把主机头(也就是域名)算在内的。第二部分为要跳转的目标地址,这个地址可以写全(包含了主机头),当然也可以不加主机头,默认就是前面定义的ServerName。第三部分为一些选项,需要用方括号括起来,301为状态码,它称作“永久重定向"(还有一种跳转用的状态码为302,叫作“临时重定向"),L表示"last",意思是跳转一次就结束了。
以111.com/123.php为例:
^/表示不是111.com开头,(.*)表示是123.php ,跳转到http://111.com/,$1就是前面第一个(.*)这部分。每个()代表着一个整体, $1对应第一个小括号,$2对应第二个小括号
检测和加载配置:
要实现域名跳转,需要有rewrite模块支持,所以先查看httpd是否已经加载该模块,如果没有还需要配置:
没有任何输出,说明没有加载该模块
加载rewrite模块
vi /usr/local/apache2.4/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so //去掉行首的#
测试
查看状态码:301
查看内容
11.21 Apache访问日志
访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问题,比如当有攻击时,是可以通过查看日志看到一些规律的。要配置httpd访问日志,首先要在主配置文件中定义访问日志的格式,可以看到两个格式的日志,建议使用第一个,记录的信息会更全。
访问日志记录用户的每一个请求
日志位置:ls /usr/local/apache2.4/logs/
查看实验机的日志内容:cat /usr/local/apache2.4/logs/111.com-access_log
打开主配置文件:vim /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat,默认用的是common
%h为访问网站的IP;
%l为远程登录名,这个字段基本上为“ -" ;
%u为用户名,当使用用户认证时,这个字段为认证的用户名 ;
%t为时间 ;
%r为请求的动作( 比如用curl -I时就为HEADE );
%s为请求的状态码,写成%>s为最后的状态码;
%b 为传输数据大小;
%{Referer)i为referer信息(请求本次地址上一次的地址就为referer,比如在百度中搜索阿铭Linux,然后通过百度的搜索结果页面点击然后到了阿铭的论坛,那访问阿铭论坛的这次请求的referer就是baidu,当然那个地址肯定是很长的);
%{User-Agent}i为浏览器标识,比如你用 Firefox或者Chrome浏览器,则该字段显示内容不一样,是带有浏览器的标识的。
对于这个日志格式,你可以自定义调整各个字段的位置,也可以额外增加其他字段,比如可以增加%D(请求耗费时间)。在工作中并没有更改过它,默认的日志格式就够用
编辑虚拟主机配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
CustomLog "logs/111.com-access_log" combined //common更改为combined
查看日志文件:cat /usr/local/apache2.4/logs/111.com-access_log
标签:Linux学习
原文地址:http://blog.51cto.com/415326/2079367