码迷,mamicode.com
首页 > 系统相关 > 详细

2018-3-2 Linux学习笔记

时间:2018-03-02 23:10:57      阅读:245      评论:0      收藏:0      [点我收藏+]

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

11.18 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 -c -m /data/.htpasswd aming #设置aming用户的认证密码
  • /usr/local/apache2.4/bin/apachectl -t #测试语法是否正确
  • /usr/local/apache2.4/bin/apachectl graceful #重新加载配置文件

  • 验证是否设置成功:
  • 方法1---本地电脑浏览器中测试
    修改本地电脑中C:\Windows\System32\drivers\etc\hosts文件,添加一行192.168.206.135 www.abc.com, 以绑定hosts(其中IP为linux虚拟机的IP),然后打开浏览器输入www.abc.com测试---正常的话会弹出一对话框,要求你输入账户密码,通过后才显示网页.
  • 方法2---直接在linux虚拟机中测试:
    curl -x127.0.0.1:80 www.123.com #此时应显示错误状态码为401
    curl -x127.0.0.1:80 -uaming:123 www.123.com #此时应正确显示index.html中的内容.其中123为之前设定的密码.正确状态码为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>
  • 验证是否设置成功:
    curl -x127.0.0.1:80 www.123.com/admin.php #此时应显示错误状态码为401
    curl -x127.0.0.1:80 -uaming:123 www.123.com/admin.php #此时应正确显示admin.php中的内容
    技术分享图片

11.19/11.20 域名跳转

  • 背景: 有时候我们的网站启用了一个新的域名, 原来的域名不再使用了,但为了让老用户访问旧域名时能自动转到新网站上,这时我们需要做域名跳转.
  • 例子: 把www.example.com 域名跳转到123.com
  • 实现域名跳转的配置如下:
    <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/123.com"
    ServerName 123.com
    ServerAlias www.example.com 2111.com
    <IfModule mod_rewrite.c> #需要mod_rewrite模块支持
    RewriteEngine on //打开rewrite功能
    RewriteCond %{HTTP_HOST} !^123.com$ #定义rewrite的条件,主机名(域名)不是123.com则满足条件
    RewriteRule ^/(.
    )$ http://123.com/$1 [R=301,L]
    #定义rewrite规则,当满足上面的条件时,这条规则才会执行.301表示永久跳转,302为临时跳转,L为Last之意,表示只跳转一次.
    </IfModule>
    </VirtualHost>

  • /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite #检测是否加载rewrite_module (shared)模块
    技术分享图片
  • 若无该模块,则需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#以让apache加载该模块
    技术分享图片
  • 验证跳转状态(状态码为301)
    curl -x127.0.0.1:80 -I www.example.com /
    技术分享图片

11.21 Apache访问日志

  • 访问日志记录用户的每一个请求,apache日志目录为/usr/local/apache2.4/logs.
  • 查看系统预定义日志格式:
  • vim /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

  • 更改当前日志格式(由common改成combined,把虚拟主机配置文件改成如下:
    <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/123.com"
    ServerName 123.com
    ServerAlias www.example.com 2111.com
    CustomLog "logs/123.com-access_log" combined
    </VirtualHost>

  • 更改完重新加载配置文件:
    /usr/local/apache2.4/bin/apachectl -t
    /usr/local/apache2.4/bin/apachectl graceful

  • 通过curl访问以产生日志记录:
    curl -x127.0.0.1:80 -I 123.com #
  • 查看产生的日志记录:
    tail /usr/local/apache2.4/logs/123.com-access_log
    技术分享图片
    扩展学习:
    apache虚拟主机开启php的短标签 http://ask.apelearn.com/question/5370

2018-3-2 Linux学习笔记

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

原文地址:http://blog.51cto.com/13517946/2080152

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!