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

Linux学习总结(三十四)lamp之用户认证和域名跳转

时间:2018-04-15 17:15:42      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:lamp   用户认证   域名跳转   访问日志   

用户认证

为了某些网站的安全需要,特意授权特定用户访问,因此产生了网站访问的用户认证机制。我们可以针对某个站点进行认证,也可以指定某个目录,或者是一个文件。编辑虚拟主机配置文件:
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那个虚拟主机编辑成如下内容

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 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 lv //指定用户,创建密码。
重新加载配置-t , graceful
绑定hosts,浏览器测试
curl -x127.0.0.1:80 123.com //状态码为401
curl -x127.0.0.1:80 -lv:lvlinux 123.com //状态码为200
如果要针对一个目录做认证,比如要对www.123.com/admin/目录做认证,只需要修改一个地方就可以。把<Directory /data/wwwroot/www.123.com>改为<Directory /data/wwwroot/www.123.com/admin/>. 如果要针对某个文件做认证,则要使用filematch功能,具体配置如下。

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 123.com
    <FilesMatch admin.php>
        AllowOverride AuthConfig
        AuthName "123.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd 
        require valid-user
    </FilesMatch>
</VirtualHost>

域名跳转

我们知道我们在百度这种搜索引擎上访问某个域名,都会被爬虫记录,某个域名的访问量越大,越容易被搜索。比如有一个网站最开始注册的域名是A,后来我们又重新起了个比较好的域名B,要让B域名访问到该网站,我们只需要简单的给A域名做一个域名别名B就可以,但是这样爬虫记录的会是两个域名,因此我们的访问量被两个域名分摊了,那么我们如何在爬虫眼里增加我们A域名的权重呢?那就需要将B域名跳转到A域名。这样一来新用户记住了一个更有价值的域名,我们的访问量也集中到了一起。域名跳转也叫域名重定向。
需求,把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> 

上面的rewrite 配置意思是,当使用域名别名访问过来时,我们自动跳转到服务器域名。用curl访问会看到我们定义的状态码301,如果用浏览器访问会发现ip将自动跳转。
/usr/local/apache2/bin/apachectl -M|grep -i rewrite //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#
curl -x127.0.0.1:80 -I 123.com //状态码为301

访问日志

访问日志记录用户的每一个请求
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 格式更丰富一些,他多了referer 和 user-agent,我们将编辑虚拟主机配置文件,将common更改为combined ,重新访问测试,查看日志。
把虚拟主机配置文件改成如下:

 <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 123.com
    CustomLog "logs/123.com-access_log" combined
</VirtualHost>

重新加载配置文件 -t,graceful
curl -x127.0.0.1:80 -I 123.com
tail /usr/local/apache2.4/logs/123.com-access_log

Linux学习总结(三十四)lamp之用户认证和域名跳转

标签:lamp   用户认证   域名跳转   访问日志   

原文地址:http://blog.51cto.com/12606610/2103646

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