Apache用户认证

有的网站在访问的时候需要我们输入账户名和密码,这样做的好处是增加了安全性,但是用户体验会很差。但是在我们在工作中还需要在一些重要的地方做一些安全认证。
首先我们编辑虚拟主机的配置文件

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
我们用第二个虚拟主机做实验,然后在 ServerName下面下上如下的内容
<Directory /data/wwwroot/123.com> //指定认证的目录(这里的网址要和前面配置文件的网址一定要一致,负责不会成功)
AllowOverride AuthConfig //这个相当于打开认证的开关
AuthName "123.com user auth" //自定义认证的名字,作用不大
AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过
AuthUserFile /data/.htpasswd //指定密码文件所在位置
require valid-user //指定需要认证的用户为全部可用用户
</Directory>

保存退出后我们要创建一个htpasswd文件,这个我们需要用apache自带的命令去生成。
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming(这里我们暂定用户名为aming,工作中还是要按照实际情况去定义)(-c,create。是创建 -m是md5加密模式)
按回车后就可以输入密码,然后重复输入密码。
如果我们再次创建一个用户和他的密码,那么我们就不用加参数-c了,以内我们已经创建过了。
然后我们从新加载做测试
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl -t(语法检查)
Syntax OK
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl graceful(重新加载)

curl-x测试
[root@linletao-001 ~]# curl -x127.0.0.1:80 111.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>(401就表示访问的内容需要做用户认证)
</head><body>
<h1>Unauthorized</h1>
<p>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.</p>
</body></html>
这样在查看网站的时候机会出现对话框,让你输入用户名和密码

如何在linux下输入密码
[root@linletao-001 ~]# curl -x127.0.0.1:80 -uaming:19860127 111.com(-u后面加有户名,“:”后面接密码)。
HTTP/1.1 200 OK(当密码正确的时候,状态码就为200,如果不对,则还是401)
Date: Sun, 15 Apr 2018 12:56:22 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Length: 7
Content-Type: text/html; charset=UTF-8

用户认证还可以针对某个文件进行认证
还可以针对单个文件进行认证<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
<FilesMatch admin.php> 和网站认证不同的是,这里用的是FilesMatch而不是Directory,并且开始和结束都要一致。
AllowOverride AuthConfig
AuthName "123.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
</VirtualHost>

域名跳转

一个网站会有多个域名,比如A可以访问一个域名,B也可以访问一个域名,而用A访问时浏览器的网址直接变成了B。这就是域名跳转过程。,那么他有什么作用呢?第一,一个网站有多个域名对SEO有影响,就是百度搜索关键词的排名有影响,如果把多个域名集中在一起,以一个域名为中心,这样就可以把权重集中在这个域名上,所以排名就靠前了。第二,如果之前的老域名不再使用,但搜索域名还留着以前的老域名,这样用户会搜索到我们的老域名并点击它,需要把老域名做一个跳转到新域名,这样用户搜索时候,也可以跳转到新域名。

具体操作如下
首先打开虚拟主机机配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
然后添加配置文件
<IfModule mod_rewrite.c> //需要mod_rewrite模块支持,这个模块在我们编译apache的时候用到的一个moust模块,这个模块会将大部分模块编译进来。如果不加,那么这个模块也就不会有了。
RewriteEngine on //打开rewrite功能
RewriteCond %{HTTP_HOST} !^www.111.com$ //定义rewrite的条件,当主机名(域名)不是www.111.com时,会自动跳转到111.com !表示取反 ,这里我们要定义开头和结尾,如果不定义开头和结尾,只要当域名中有111时就会认为他是正确的域名。所以我们一定要在主域名的前后加上^和$。
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] //定义rewrite规则,当满足上面的条件时,这条规则才会执行 301为永久跳转,302为临时跳转,我们一般都用301。
</IfModule>

改完配置文件以后我们需要检测语法和重新加载
然后我们还需要到Apache的配置文件中查看LoadModule rewrite_module modules/mod_rewrite.so是否加载,如果被注释了,那么我们还需要将它重新加载。
[root@linletao-001 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
rewrite_module (shared)(加载成功)
如果修改了,我们在保存退出后还要进行语法检测和重新加载。
然后我们检测
[root@linletao-001 ~]# curl -x192.168.1.106:80 2111.com.cn -I
HTTP/1.1 301 Moved Permanently
Date: Sun, 15 Apr 2018 14:54:17 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1
状态码为301,现在已经成功的跳转了。

apache访问日志

在cat /usr/local/apache2.4/logs/111.com-access_log有我们需要看的访问日志
[root@linletao-001 ~]# cat /usr/local/apache2.4/logs/111.com-access_log
192.168.1.106 - - [15/Apr/2018:13:56:22 +0800] "GET HTTP://www.example.com/ HTTP/1.1" 200 7
192.168.1.106 - - [15/Apr/2018:14:19:25 +0800] "GET HTTP://www.789.com/ HTTP/1.1" 200 7
192.168.1.106 - - [15/Apr/2018:20:34:16 +0800] "GET HTTP://www.111.com/ HTTP/1.1" 200 7
上面试我们访问日志的格式,而这个格式我们是可以定义格式的,在Apache的主配置文件中搜索LogFormat,在这下面有两个格式定义,分别是combined和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(以前为common)
</VirtualHost>

转载于:https://blog.51cto.com/13067688/2103775

4.13 apache用户认证,跳转和访问日志相关推荐

  1. 41.Apache用户认证及访问日志 域名跳转

    2019独角兽企业重金招聘Python工程师标准>>> 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 扩展 apache虚拟主 ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 11.18 Apache用户认证 htpasswd命令 >htpasswd命令是Apache的Web服务器内置工具,用于 ...

  3. Apache用户认证,域名跳转

    2019独角兽企业重金招聘Python工程师标准>>> 11月15日任务 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 11. ...

  4. 84.LAMP的apache用户认证,域名跳转,日志文件

    apache用户认证 PS:其实没有....用处的... 命令描述 htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名.域和用户基本认证的密码文件. 命令语法 htpa ...

  5. Linux CentOS7 VMware LAMP架构Apache用户认证、域名跳转、Apache访问日志

    一.Apache用户认证 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容 <Virtu ...

  6. Apache用户认证、域名跳转、Apache访问日志

    httpd的用户认证 注意: 本章使用浏览器进行检测的前提是在物理机hosts文件添加虚拟机IP和虚拟主机域名. 配置用户认证 编辑httpd配置文件/usr/local/apache2.4/conf ...

  7. Apache(httpd)配置--用户认证,域名跳转和访问日志配置

    一.用户认证 用户认证功能就是在用户访问网站的时候,需要输入用户名密码才能进行访问.一些比较好总要的站点和网站后台都会加上用户认证,以保证安全. 实例:下面对zlinux.com站点来做一个全站的用户 ...

  8. Apache用户认证、默认虚拟主机、域名301跳转

    apache hosts配置文件: vim /usr/local/apache/conf/extra/httpd-vhosts.conf apache 主配置文件: vim /usr/local/ap ...

  9. 【CentOS 7LAMP架构7】,Apache用户认证#171220

    2019独角兽企业重金招聘Python工程师标准>>> hellopasswd httpd的用户认证 vi /usr/local/apache2.4/conf/extra/httpd ...

最新文章

  1. Maria数据库怎么复制到mysql_maria(mysql)的主从复制
  2. 运维企业专题(9)RHCS集群工具介绍
  3. python学到什么程度可以做兼职-Python学到什么程度就可以找工作?
  4. Qt 互斥锁 QMutex 的简单应用
  5. P4091-[HEOI2016/TJOI2016]求和【斯特林数,NTT】
  6. Ubuntu系统截图
  7. error while loading shared libraries: libstdc++.so.6
  8. 12、SpringBoot------activeMq的简单使用
  9. 蛋糕是叫胚子还是坯子_最好吃的蛋糕胚子——分蛋海绵蛋糕详解
  10. c语言大学生信息管理系统实验报告,c语言学生信息管理系统实训报告
  11. 微信小程序实现datamatrix(dm)码
  12. 极客学院小程序视频教程
  13. IP协议和IPX协议的区别
  14. metasploit、msfvenom生成木马入侵电脑及手机
  15. Unity3d游戏中实现阿拉伯语文字正常显示
  16. 2022年内蒙古最新建筑八大员(标准员)模拟考试试题及答案
  17. wordpress社交系统_如何将您的WordPress网站变成社交网络
  18. easy-table-vue+Vue、SpringBoot+Mybatis实现MVVM模型前后台数据交互
  19. python中uppercase是什么意思_python判断大小写并转换_python中string模块相关方法(大小写转换,字符串条件判断)....
  20. 浅析HTML5中标签del和ins以及HTML5中被舍弃的标签

热门文章

  1. boost::gil模块实现带默认参数的框过滤器的测试程序
  2. GDCM:gdcm::Testing的测试程序
  3. boost::allocator_destroy的实例
  4. boost::contract模块实现friend功能的测试程序
  5. ITK:将图像翻转到指定的轴上
  6. DCMTK:DcmItem和DcmSequenceOfItem的路径功能测试程序
  7. OpenCV cv :: UMat与DirectX10曲面的互操作性的实例(附完整代码)
  8. OpenGL背景照明
  9. C语言实现了一个具有头结点的单链表(附完整源码)
  10. map可以用结构体作为健值吗?