前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache用户认证,域名跳转,Apache访问日志

Apache用户认证,域名跳转,Apache访问日志

作者头像
端碗吹水
发布2020-09-23 10:58:46
10.4K0
发布2020-09-23 10:58:46
举报

笔记内容:

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

笔记日期:2017.10.09

11.18 Apache用户认证

2394
2394

用户认证是在你打开网页的时候就需要进行认证,如果没有通过认证就不允许访问网页,和网站上的登录账户不一样。这样的做法虽然可以增加安全性,但是会导致用户体验很差,因为总是要你认证完了才能访问网页,也是挺麻烦的。不过这样的需求还是有可能会遇到的,因为有些网页需要比较高的安全保证,例如后台管理员登录的入口网页。

  1. 编辑虚拟主机配置文件:

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

  1. 修改成如下内容:

<VirtualHost *:80>

   DocumentRoot "/data/wwwroot/111.com"

   ServerName 111.com

   <Directory /data/wwwroot/111.com> //指定认证的目录

       AllowOverride AuthConfig //这个相当于打开认证的开关

       AuthName "111.com user auth" //自定义认证的名字,作用不大

       AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过

       AuthUserFile /data/.htpasswd  //指定密码文件所在位置

       require valid-user //指定需要认证的用户为全部可用用户

   </Directory>

</VirtualHost>

2395
2395
  1. 生成用户密码文件:

/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd user111

2396
2396

可以查看文件里的内容,左边的是用户名,右边的是密码,这个密码是用md5加密的:

2397
2397

第二次再添加用户的时候就不需要加-c选项了,因为密码文件已经创建过了:

2398
2398

这时查看密码文件就可以看到多了一行内容:

2399
2399
  1. 重新加载配置文件:
2400
2400
  1. 然后使用curl命令测试一下:
2401
2401

发现出现了401状态码,这是因为需要进行用户验证。

使用-I选项能看到详情:

2402
2402

这时候使用浏览器进行访问就会发现需要你输入用户密码进行验证了(域名需要在Windows的hosts文件里配置一下,让这个域名指向你虚拟机的IP):

2403
2403
2405
2405

需要输入刚刚设置的用户名和密码才可以进行访问:

2406
2406
2407
2407

如果要使用curl命令进行访问的话也可以,需要使用-u选项指定好用户名和密码:

2408
2408
2409
2409

我们现在设置的是访问所有的网页文件都需要进行认证,除此之外还可以设置针对单个文件进行认证,只有访问这个文件才需要进行认证,访问其他的文件则不需要进行认证。

2410
2410
  1. 修改一下虚拟主机配置文件,修改成以下内容:

<VirtualHost *:80>

   DocumentRoot "/data/wwwroot/111.com"

   ServerName 111.com

   <FilesMatch 123.php>

       AllowOverride AuthConfig

       AuthName "111.com user auth"

       AuthType Basic

       AuthUserFile /data/.htpasswd

       require valid-user

   </FilesMatch>

</VirtualHost>

2411
2411

2.创建123.php文件,用于测试:

vim /data/wwwroot/111.com/123.php

2412
2412
  1. 现在可以直接访问111.com:
2413
2413

但是如果访问111.com下的123.php就会需要认证了:

2414
2414

同样的需要加上用户名和密码验证后才能访问:

2415
2415
2416
2416

11.19/11.20 域名跳转

2417
2417

域名跳转就是从一个域名跳转到另一个域名上,例如我要访问111.com这个域名,然后加载时会跳转到123.com这个域名上并显示页面内容,这就是域名跳转。

  1. 修改虚拟主机配置文件为以下内容:

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

2418
2418

修改完之后重新加载配置文件:

2419
2419

在测试之前先检查一下你的apahce是否加载了rewrite模块:

/usr/local/apache2.4/bin/apachectl -M |grep rewrite

2420
2420

如果没有加载的话,需要配置一下httpd的配置文件:

2421
2421

模块加载了之后就可以进行测试了:

2422
2422

状态码显示301就表示成功:

2423
2423
2424
2424

11.21 Apache访问日志

2425
2425

访问日志记录用户的每一个访问、请求,日志文件在/usr/local/apache2.4/logs/目录下:

2426
2426

刚刚我们做实验访问的是111.com,所以日志文件是以111.com开头的,查看日志内容:

2427
2427

这个日志是可以定义它的格式的,在apache的主配置文件里定义:

2428
2428

%h 表示来源ip

%l 表示用户

%u也表示用户

%t表示时间

%r表示请求类型(HEAD或GET之类)

%>s 表示状态码

%b 表示大小

%{User-Agent}i 表示用户代理(浏览器或curl就是代理,会显示代理的信息)

%{Referer}i 表示浏览器上一次访问的网址

开始进行配置,将虚拟主机配置文件修改成以下内容:

2429
2429

然后使用curl命令和浏览器进行访问一下,然后再查看一下日志文件会发现最新的两行内容格式不一样了:

2430
2430
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档