lamp(五)——用户认证、域名跳转、访问日志

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

Apache用户认证

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>

使用apache自带的工具生成密码,命令是/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd user1。参数c指生成,m指md5加密方式。

重新加载配置:apachectl -t测试无误,然后apachectl graceful。测试可以用浏览器和curl。在第三方机器浏览器测试需要绑定hosts,不然dns、hosts中都没有解析。

curl -x127.0.0.1:80 www.123.com //状态码为401
curl -x127.0.0.1:80 -uuser1:passwd www.123.com //状态码为200

上面是对一个目录进行认证访问,还可以针对单个文件进行认证。

<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>

域名跳转

虚拟主机可以配置servername和serveralias,也就是可以有多个域名。为了排名竞争(seo),网站要尽量一个域名作为主域名,例如把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规则,当满足上面的条件时,这条规则才会执行。$1指括号内的整体。匹配可以省略域名主体。
</IfModule>
</VirtualHost>

由于上面配置中用到了rewrite模块,所以在重新加载配置文件前要查看该模块是否加载:/usr/local/apache2/bin/apachectl -M|grep -i rewrite //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#。

修改完apache配置记得重新加载配置文件。然后curl -x127.0.0.1:80 -I 123.com测试,返回状态码为301,表示跳转成功。

Apache访问日志

apache配置文件中日志有错误日志和访问日志,记录相关信息,是运维的重要工具。访问日志记录用户的每一个请求。

在apache配置文件可以查看修改日志记录的格式,vim /usr/local/apache2.4/conf/httpd.conf,搜索LogFormat就可以看到有combined和common两种格式。combined更详细一些,会多记录referer、user-agent等信息。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
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
</VirtualHost>

重新加载配置文件。curl -x127.0.0.1:80 -I 123.com增加访问记录。然后查看访问日志:tail /usr/local/apache2.4/logs/123.com-access_log

    原文作者:awsome365
    原文地址: https://www.jianshu.com/p/6ad9c7a83039
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞