wuliws 发表于 2018-11-17 13:01:47

11.18-11.21 Apache的用户认证,域名跳转,Apache访问日志

  11.18Apache的用户认证

  把相应参数copy进去第二个虚拟主机(为了不影响默认主机使用,所以选择了第二个虚拟主机)
//指定认证的目录  
      AllowOverride AuthConfig //这个相当于打开认证的开关
  
      AuthName "123.com user auth" //自定义认证的名字,作用不大
  
      AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
  
      AuthUserFile /data/.htpasswd//指定密码文件所在位置
  
      require valid-user //指定需要认证的用户为全部可用用户
  
   
  # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

  修改后

  配置完成后,需要创建密码文件,
# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming  上条命令的解释:
  htpasswd工具,-c创建,-m MD5加密,后接密码文件./htpasswd 再接用户。
# ls /data/.htpasswd  
/data/.htpasswd
  可以cat密码文件,是一串暗码,是因为被MD5加密过。
# cat /data/.htpasswd  
aming:$apr1$5mmrMCOX$E0QY/azyYojxZy0jTlsxt1
  *注意:如果需要再次增加用户,取消-c 因为-c是创建和生成,如果使用了-c会被覆盖掉。
  # /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd zhangsan
  /usr/
  设置完密码后,
  重新加载配置-t , graceful
  #curl检视信息,401表示此网页需要验证。

  配置完成后,需要到真实机windows修改hosts文件(C:\Windows\System32\drivers\etc),把网址添加进去


  登录正确账号密码则可验证成功
  截图
  如果想单独一个文件进行认证,可以这样做。

  #vim /data/wwwroot/111.com/123.php
  重新加载配置-t , graceful
  完成后, 登录111.com/123.php 就需要认证,而111.com就不需要认证。
  11.19 11.20 域名跳转

  这个用法比较普遍,一个网站可能会有多个域名。
  比如阿铭论坛可以用www.lishiming.net访问,也可以用ask.apelearn.com访问。而用www.lishiming.net访问时,浏览器直接跳转到ask.apelearn.com,这就是域名的跳转过程。
  状态码:301表示永久重定向,永久跳转。
  编译Apache的时候,其中有一项的值是most,其实意思就是把大多数都能使其加载。
  而不同的功能需求就代表着不同的模块。
  把这段参数复制到httpd-vhost里的虚拟主机上面,
   //需要mod_rewrite模块支持  
      RewriteEngine on//打开rewrite功能
  
      RewriteCond %{HTTP_HOST} !^111.com$//定义rewrite的条件,主机名(域名)不是www.111.com满足条件,而我们刚好就设定了2个域名(111.com www.example.com)。
  
      RewriteRule ^/(.*)$ http://111.com/$1 //定义rewrite规则,当满足上面,/(.*)相当于111.com/123.php中的123.php R=301是表示状态码是301,L=last,L表示只跳一次。
  检查状态,重新加载。检查模块,
# /usr/local/apache2.4/bin/apachectl -t  
# /usr/local/apache2.4/bin/apachectl grace
  
# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
  如果模块没被过滤出来,则需要打开模块。
  编辑httpd.conf,搜索/rewrite,把#去掉,打开模块。
LoadModule alias_module modules/mod_alias.so  
#LoadModule rewrite_module modules/mod_rewrite.so
  再次检查状态,重新加载。检查模块,
  # /usr/local/apache2.4/bin/apachectl -t
  # /usr/local/apache2.4/bin/apachectl graceful
  # /usr/local/apache2.4/bin/apachectl -M |grep rewrite
  rewrite_module (shared)
  状态码是301,跳转成功。
  # curl -x127.0.0.1:80 2111.com.cn -I
  HTTP/1.1 301 Moved Permanently
  Date: Sat, 14 Apr 2018 04:24:08 GMT
  Server: Apache/2.4.33 (Unix) PHP/5.6.30
  Location: http://111.com/
  Content-Type: text/html;
  11.21 配置访问日志
  
  访问日志记录用户的每一个请求
  访问日志目录,其中111.com-access_log 就是访问日志文件
# ls /usr/local/apache2.4/logs/  
111.com-access_logaccess_log                        error_log
  
111.com-error_log   dummy-host2.example.com-access_loghttpd.pid
  
123.com-access_logdummy-host2.example.com-error_log
  
123.com-error_log   dummy-host.example.com-access_log
  #cat 111.com-access_log

  HEAD的包 curl -I的包
  GET是没有加-I的包
  可以进入httpd.conf参考定义日志格式

  通常使用第一种格式,combined
  参数介绍
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 远程登录名,这个字段通常是"-"
  %t 时间
  %r 请求动作,比如 curl -I的时候是HEAD
  %s 请求状态码,404 301....
  %b 传输数据大小
  % {Referer}i referer信息 上一次访问的信息,例如,登录了两个网页,第一个是baidu.com,在百度里搜索了阿铭论坛ask.apelearn.com,那么访问阿铭论坛的referer就是baidu了,通常这个信息地址是很长的。
  % {User-Agent}i 浏览器标识,比如用firefox和Chrome是不一样的内容显示,使用curl也算在内。
  %
  配置定义格式,格式为combined
  编辑httpd-vhost.conf

/usr/local/apache2.4/bin/apachectl -t  
Syntax OK
  
/usr/local/apache2.4/bin/apachectl graceful
  curl几次,浏览器打开网页,来回访问几次。
  再cat日志查看日志信息。
#cat 111.com-access_log


页: [1]
查看完整版本: 11.18-11.21 Apache的用户认证,域名跳转,Apache访问日志