renshanshan 发表于 2018-11-17 12:57:36

四十一、Apache用户认证、域名跳转、Apache访问日志

  一、Apache用户认证
  功能是用户在访问网站时,需要输入用户名和密码才能进入网站。一些重要站点或网站后台通常加用户认证,目的是保证安全。
  # vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
  
  DocumentRoot "/data/wwwroot/111.com"
  ServerName 111.com
  ServerAlias www.example.com
     //指定认证的目录
  AllowOverride AuthConfig                //打开认证的开关
  AuthName "111.com user auth"       //自定义认证的名字,作用不大
  AuthType Basic                                 //认证的类型,一般为Basic
  AuthUserFile /data/.htpasswd         //指定密码文件所在位置
  require valid-user                   //指定需要认证的用户为全部可用用户
  
  ErrorLog "logs/111.com-error_log"
  CustomLog "logs/111.com-access_log" common
  
  httpd配置文件配置完成,创建密码文件:
  # /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd MRX
  New password:
  Re-type new password:
  Adding password for user MRX
  htpasswd命令为创建用户的工具,-c创建(create),-m指定密码加密方式为MD5,再加上用户名;
  /data/.htpasswd为密码文件,MRX为要创建的用户,第一次执行该命令需要加-c;
  第二次再创建新的用户时,就不用加-c了,否则/data/.htpasswd文件会被重置,之前的用户被清空。
  # /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  # /usr/local/apache2.4/bin/apachectl graceful
  # curl -x 127.0.0.1:80 111.com
  
  
  401 Unauthorized
  
  Unauthorized
  This server could not verify that you
  are authorized to access the document
  requested.Either you supplied the wrong
  credentials (e.g., bad password), or your
  browser doesn't understand how to supply
  the credentials required.
  
  //401状态码,表示访问的内容需要做用户验证,验证不对就401,对就200。
  可以在浏览器访问这个111.com,前提是需要在Windows的hosts文件里加上111.com。
  # curl -x 127.0.0.1:80 -uMRX:12345 111.com
  111.com#      //访问成功,状态码200。
  -u:指定用户名和密码
  上面的操作是对整个站点做的认证,其实也可以针对某个目录或者文件进行认证,比如对www.111.com/admin/目录进行认证,只需要修改一个地方,把;如果是文件,则需要这样改:
  #//注释掉
  
  AllowOverride AuthConfig
  AuthName "111.com user auth"
  AuthType Basic
  AuthUserFile /data/.htpasswd
  require valid-user
  
  #    //注释掉
  # /usr/local/apache2.4/bin/apachectl -t
  Syntax OK
  # /usr/local/apache2.4/bin/apachectl graceful
  # vim /data/wwwroot/111.com/123.php
  
页: [1]
查看完整版本: 四十一、Apache用户认证、域名跳转、Apache访问日志