十周三次课(12月20日)
11.18 Apache用户认证
11.19/11.20 域名跳转
11.21 Apache访问日志
扩展
apache虚拟主机开启php的短标签
http://ask.apelearn.com/question/5370
httpd用户认证
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那个虚拟主机编辑成如下内容
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
<Directory /data/wwwroot/www.123.com> //指定认证的目录
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "123.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>
</VirtualHost>
生成密码qq1234,第一次需要-c,第二次就不用c了
• /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming
• 重新加载配置-t , graceful
• 绑定hosts,浏览器测试
• curl -x127.0.0.1:80 www.123.com //状态码为401
• curl -x127.0.0.1:80 -uaming:passwd www.123.com -I //状态码为200,输错密码就会提示401
针对单个文件进行认证
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
<FilesMatch admin.php> #当打开的页面是admin.php才会执行下面的密码验证
AllowOverride AuthConfig
AuthName "123.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
</VirtualHost>
curl -x127.0.0.1:80 123.com/admin.php
curl -x127.0.0.1:80 -uaming:qq1234 www.123.com/admin.php -I
域名跳转
<IfModule mod_rewrite.c> //需要mod_rewrite模块支持
RewriteEngine on //打开rewrite功能
RewriteCond %{HTTP_HOST} !^www.123.com$ //定义rewrite的条件,主机名(域名)不是www.123.com满足条件
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行,301是永久重定向,302是临时重定向,临时的不会增加搜索引擎的权重,一般都是用301
</IfModule>
验证之前需要检查rewrite模块是否打开。如果没有打开需要加载
/usr/local/apache2.4/bin/apachectl -M| grep rewrite
vim /usr/local/apache2.4/conf/httpd.conf
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/abc.com"
ServerName abc.com
ServerAlias www.abc.com www.111.com
ErrorLog "logs/abc.com-error_log"
CustomLog "logs/abc.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/123.com"
ServerName 123.com
ServerAlias www.123.com 1123.com.cn
# <Directory /data/wwwroot/123.com>
# <FilesMatch admin.php>
# AllowOverride AuthConfig
# AuthName "123.com user auth"
# AuthType Basic
# AuthUserFile /data/.htpasswd
# require valid-user
# </FilesMatch>
# </Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} !^123.com$
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L]
</IfModule>
ErrorLog "logs/123.com-error_log"
CustomLog "logs/123.com-access_log" common
</VirtualHost>
curl -x127.0.0.1:80 1123.com.cn/123/12 -I
这里的代码是301,表示永久跳转
404是没有这个页面
403是配置文件/usr/local/apache2.4/conf/httpd.conf没有修改Require all denied 为 Require all granted
401是用户名密码验证不对,密码验证对了就是200
200是正常访问
Apache访问日志
apache日志会根据主机分别创建日志文件,目录:/usr/local/apache2.4/logs
vim /usr/local/apache2.4/conf/httpd.conf 在主配置文件中定义日志格式,默认是用common
h来源ip、l用户密码、u用户、t时间、r行为,网址、s状态码、b大小
{Referer}浏览器进入一个网站后的第二个页面,referer记录的日志的就是第一个访问页面的网址是什么、在百度中搜索进入开源中国网站首页后,referer记录的就是百度搜出来的结果页面网址
{User-Agent}用户代理(怎么获得网址内容,是浏览器还是curl)
修改日志记录的方式为combined
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
CustomLog “logs/123.com-access_log” common
CustomLog “logs/123.com-access_log” combined
tail -30 /usr/local/apache2.4/logs/123.com-access_log