Apache用户认证,域名跳转,Apache访问日志

11月15日任务

11.18 Apache用户认证
11.19/11.20 域名跳转
11.21 Apache访问日志

1.Apache用户认证

  •  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>  
  • /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming  用Apache自带的密码工具生成一个密码
  • 重新加载配置-t , graceful  
  • 绑定hosts,浏览器测试  
  • curl -x127.0.0.1:80 www.123.com //状态码为401  
  • curl -x127.0.0.1:80 -uaming:passwd www.123.com //状态码为200 指定用户名和密码

实验:一

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

  • 生成密钥,-m 是指定加密类型,-c是创建

  • 重新加载一下

  • 访问一下,提示要用户认证

  • -u 指定用户认证密码与用户

实验:二

  • 还可以针对单个文件进行认证
  • <VirtualHost *:80>    
  • DocumentRoot "/data/wwwroot/www.123.com"
  •     ServerName www.123.com    
  • <FilesMatch admin.php>        
  • AllowOverride AuthConfig        
  • AuthName "123.com user auth"        
  • AuthType Basic        
  • AuthUserFile /data/.htpasswd        
  • require valid-user    
  • </FilesMatch>
  • </VirtualHost>
  • 配置更改一下

  • 重新加载一下

  • 编辑一下123.PHP文件

  • 访问其他的不会401,访问123.php才会认证

2. 域名跳转

  • 需求,把123.com域名跳转到www.123.com,配置如下:
  • <VirtualHost *:80>    
  • DocumentRoot "/data/wwwroot/www.123.com"
  • ServerName www.123.com    
  • ServerAlias 123.com    
  • <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规则,当满足上面的条件时,这条规则才会执行 </IfModule>
  • </VirtualHost>  
  • /usr/local/apache2/bin/apachectl -M|grep -i rewrite //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#  
  • curl -x127.0.0.1:80 -I 123.com //状态码为301

实验:一

  • 编辑一下配置

  • 重新加载一下

  • 检查这个模块是否加载,没有加载的话,就编辑这个文件

  • /rewrite 搜索一下,取消#号,打开模块

  • 重新加载一下这个模块

  • 测试一下,301就表示是域名跳转的

3.Apache访问日志

示例一:

  • 访问日志记录用户的每一个请求  
  • vim /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat
  • LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 会记录referer和user-agent。
  • LogFormat "%h %l %u %t \"%r\" %>s %b" common  简单记录日志
  • 把虚拟主机配置文件改成如下:  
  • <VirtualHost *:80>    
  • DocumentRoot "/data/wwwroot/www.123.com"
  • ServerName www.123.com    
  • ServerAlias 123.com    
  • CustomLog "logs/123.com-access_log" combined  定义为记录referer和user-agent格式的日志
  • </VirtualHost>  
  • 重新加载配置文件 -t,graceful  
  • curl -x127.0.0.1:80 -I 123.com  
  • tail /usr/local/apache2.4/logs/123.com-access_log
  • 查看一下logs日志

  • /LogFormat 搜索一下,日志的格式

猜你喜欢

转载自my.oschina.net/u/3962011/blog/2876971