1 站点访问控制

可基于两种机制指明对哪些资源进行何种访问控制;

  • 文件系统路径
  • URL路径

注意:

从上到下匹配,匹配到一个就立即执行

如果没有子目录的访问控制,但是有父目录的访问控制,则子目录继承父目录的访问控制

1.1 IP访问规则设置

HTTPD-2.2

Order allow,deny		##Order是固定关键字,后面的allow和deny是参数,哪个在后面,就表示默认策略是什么;所以说要根据默认策略配置下面的条目;这条配置永远放在IP访问规则部分的第一条;
Deny from host www.jzbg.com ##拒绝这个域名对应的主机访问;
Deny from 10.207.51.0/28 ##拒绝这个网段的IP访问
Deny from 10.207.51.8 ##决绝某个主机访问
Allow from web.jzbg.com
Allow from 10.207.51.0/25
Allow from 10.207.51.128
Allow from all ##允许所有人访问;
Deny from all ##拒绝所有人访问;

HTTPD-2.4

<Requireall>			##当同时存在not和非not语句是,要将所有rule写在<RequireAll>或者<RequireAny>标签容器中;
Require host web.jzbg.com
Require not host web.jzbg.com
Require not host www.jzbg.com ##not表示拒绝的意思
Require ip 10.207.51.0/25
Require ip 10.207.51.128 10.207.51.130
Require ip 10 172.20 192.168.2
Require not ip 10.207.51.0/28
Require not ip 10.207.51.8
Require all granted ##允许所有人访问;

Require all denied ##拒绝所有人访问;2.4版本没有Order了,因为默认就是Deny;
<Requireall>

1.2 文件系统路径

根据需要将上面的IP访问规则放到里面

对指定目录下的内容做访问控制

<Directory "/PATH">
...
</Directory>

对指定目录下的目录做访问控制,在双引号前面加上~,则可以使用正则表达式

<Directory ~"^/www/[0-9]{3}">
...
</Directory>

对PATTERN可以匹配到的目录进行范文控制,支持正则表达式

<DirectoryMatch "^/www/(.+/)?[0-9]{3}/">
...
</DirectoryMatch>

对PATTERN可以匹配到的文件进行访问控制,PATTERN支持通配符

<Files "PATTERN">
...
</Files>

对PATTERN可以匹配到的文件进行访问控制,在双引号前面加上~,则可以使用正则表达式

<Files ~"^/www/[0-9]{3}">
...
</Files>

对PATTERN可以匹配到的文件进行访问控制,支持正则表达式

<FilesMatch ".+\.(gif|jpe?g|png)$ ">
...
</FileMatch>

1.3 基于URL路径做访问控制

根据需要将上面的IP访问规则放到里面

对指定的URL进行访问控制

<Location "URL-path|URL">
...
</Location>

对指定的URL进行访问控制

<Location "^/www/[0-9]{3}">
...
</Location>

对PATTERN可以匹配到的URL进行范文控制,PATTERN支持通配符和正则表达式

<LocationMatch "PATTERN">
...
</LocationMatch>

2 基于用户的访问控制

2.1 认证过程简述

服务器收到client发来的request之后,服务器会发送认证质询(WWW-Authenticate,响应码为401,拒绝客户端请求)给client,client会看到一个提示框,要求输入账号和密码,当client输入了账号和密码之后,client发送请求报文Authorization给server,server收到之后验证是否正确,如果正确则通过验证,发送响应资源;

2.2 一次失败的认证过程

客户端发送了请求报文


因为网页需要认证,服务器端会相应一个认证质询WWW-Authenticate,响应码为401,拒绝客户端请求;


客户端收到后会先回复一个ACK进行确认


此时网页上出现一个弹框,等待用户输入完用户密码之后客户端发送请求报文Authorization给服务器端;


信息完全是明文的(因为AuthType Basic),如果使用digest则为密文


因为认证失败,所以网页界面变成了


因为客户端输入的用户和密码不正确,所以服务器端又发送了认证质询报文;


3.3 基于用户进行认证

定义安全域

<Directory "/var/www/html">
Options Indexes
AllowOverride None
AuthType Basic ##使用什么认证方式(None|Basic|Digest|Form)
AuthName "Admin Area, Please enter username and passwd" ##显示给客户端的提示;
AuthUserFile "/var/www/passwd" ##存储用户认证用户信息的文件(账号密码); 选择一个配置
Require user Allen ##允许哪个用户访问;
Require valid-user ##允许账号文件中的所有用户登录
</Directory>

创建账号文件

[root@centos7 ~]# htpasswd -m -b -n Allen 123456 | xargs > /var/www/passwd
[root@centos7 ~]# htpasswd -m -b -n Barry 123456 | xargs >> /var/www/passwd
[root@centos7 ~]# cat /var/www/passwd
Allen:$apr1$4zE.hBCF$9hMwE161RPsDaGiN1AZqW1
Barry:$apr1$9l.CBxWR$i8WW7zcOPuVLJvcvDAn73/

这种basic的方式十分不安全,通过抓包能看到用户输入的账户名和密码

3.4 基于组账号进行认证

定义安全域

<Directory "/var/www/html">

Options Indexes

AllowOverride None

AuthType Basic ##使用什么认证方式(None|Basic|Digest|Form)

AuthName "Admin Area, Please enter username and passwd" ##显示给客户端的提示;

AuthUserFile "/var/www/passwd" ##存储用户认证用户信息的文件(账号密码);

AuthGroupFile "/var/www/group" ##指定组信息文件

Require group Super ##允许哪个组的用户访问

创建账号文件

[root@centos7 ~]# htpasswd -m -b -n Allen 123456 | xargs > /var/www/passwd
[root@centos7 ~]# htpasswd -m -b -n Barry 123456 | xargs >> /var/www/passwd
[root@centos7 ~]# cat /var/www/passwd
Allen:$apr1$4zE.hBCF$9hMwE161RPsDaGiN1AZqW1
Barry:$apr1$9l.CBxWR$i8WW7zcOPuVLJvcvDAn73/

创建组信息文件

[root@centos7 ~]# vim /var/www/group
Super:Allen Barry ##每行定义一个组,GROUP_NAME:username1 username2 .....

3 持久连接

配置命令

KeepAlive On|Off				##开启或关闭KeepAlive
KeepAliveTimeout 15 ##设置KeepAlive的最大持续连接时间为15s,httpd-2.2只能是秒,httpd-2.4可以是毫秒(后面加ms表示毫秒,不加表示秒);
MaxKeepAliveRequests 100 ##设置每个长连接在建立过程中,最大处理100个请求;

这表示配置了长连接

通过telnet也可以测试

4 HTTP虚拟主机

实现方法

有三种表示方法,也就有三种实现方法

  • 基于IP:为每个虚拟主机准备至少一个IP地址;
  • 基于PORT:为每个虚拟主机使用至少一个独立PORT;
  • 基于FQDN:为每个虚拟主机使用至少一个FQDN;

    注意:httpd-2.2中,一般虚拟主机不能与中心主机混用;因此,要使用虚拟主机,得先禁用“main”主机(禁用方法:注释中心主机得DocumentRoot指令即可);

基于IP的虚拟主机示例


基于端口的虚拟主机示例


基于FQDN的虚拟主机示例


注意:httpd-2.2,配置基于FQDN的虚拟主机必须事先使用如下指令

NameVirtualHost IPADDRESS:PORT		##在VirtualHost前面加一条命令,每个VirtualHost都需要;
<VirtualHost IPADDRESS:PORT>
.....
</VirtualHost>

简述站点访问控制、基于用户的访问控制、httpd虚拟主机、持久链接等应用配置实例的更多相关文章

  1. httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例

    httpd配置内容 httpd2.2 配置文件: /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf 服务脚本: /etc/rc.d/init.d/ ...

  2. 编译安装基于 fastcgi 模式的多虚拟主机的wordpress和discuz的LAMP架构

    目录 实现CentOS 7 编译安装基于 fastcgi 模式的多虚拟主机的wordpress和discuz的LAMP架构 准备环境: 准备软件版本: 主机名修改用以区分 数据库服务器 实现数据库二进 ...

  3. HAProxy详解(三):基于虚拟主机的HAProxy负载均衡系统配置实例【转】

    一.基于虚拟主机的HAProxy负载均衡系统配置实例 1.通过HAProxy的ACL规则配置虚拟主机: 下面将通过HAProxy的ACL功能配置一套基于虚拟主机的负载均衡系统.这里操作系统环境为:Ce ...

  4. nginx篇最初级用法之三种虚拟主机基于域名\基于端口\基于IP地址端口的虚拟主机

    在nginx中虚拟主机的类型与apache一样也有三种 1.基于域名的虚拟主机 2.基于端口的虚拟主机 3.基于IP地址端口的虚拟主机 在nginx配置文件中每一个server为一个虚拟主机如果需要多 ...

  5. CentOS7配置httpd虚拟主机

    本实验旨在CentOS7系统中,httpd-2.4配置两台虚拟主机,主要有以下要求: (1) 提供两个基于名称的虚拟主机: www1.stuX.com,页面文件目录为/web/vhosts/www1: ...

  6. httpd 虚拟主机建立之访问机制及其日志定义

    注:关闭防火墙,selinux VirtualHost定义: 基于IP地址VirtualHost: 编辑httpd.conf文件: #DocumentRoot "/web/html" ...

  7. 源码编译安装LAMP环境及配置基于域名访问的多虚拟主机

    实验环境及软件版本: CentOS版本: 6.6(2.6.32.-504.el6.x86_64) apache版本: apache2.2.27 mysql版本:  Mysql-5.6.23 php版本 ...

  8. 配置httpd虚拟主机

    轻松配置httpd的虚拟主机 httpd使用VirtualHost指令进行虚拟主机的定义.支持三种虚拟主机:基于ip,基于端口和基于名称.其中基于端口的虚拟主机在httpd的术语上(例如官方手册)也属 ...

  9. 在基于Windows系统的PHP虚拟主机上实现域名的301永久重定向

    作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=581 操作背景: 当网站在更换或添加域名.进行网址规范化或删除旧页面时,出于对用户使用体验和搜索引擎优化方面的考虑就需要 ...

随机推荐

  1. Tinkoff Challenge - Elimination Round C. Mice problem(模拟)

    传送门 题意 给出一个矩形的左下角和右上角的坐标,给出n个点的初始坐标和运动速度和方向,询问是否存在一个时间使得所有点都在矩形内,有则输出最短时间,否则输出-1 分析 对于每个点如果运动过程中都不在矩 ...

  2. 【插件开发】—— 6 SWT 复杂控件使用以及布局

    前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭配 前几篇讲到了简单控件的使用,复杂控件使用原则上与 ...

  3. 5 分钟掌握 JS 实用窍门技巧,帮你快速撸码--- 删除数组尾部元素、E6对象解构、async/await、 操作平铺嵌套多维数组等

    1. 删除数组尾部元素 一个简单方法就是改变数组的length值: const arr = [11, 22, 33, 44, 55, 66]; arr.length = 3; console.log( ...

  4. Luogu P1140 相似基因 【dp】By cellur925

    最近博客更不起来...然后又(照例)犯鼻炎了唉难受. 题目传送门 我们首先可以预处理碱基间的权值表.然后讲读入的碱基转化为数字,就变成了“数字匹配使权值最大”的问题.我们显然可以用动态规划解决. 两个 ...

  5. CF449D Jzzhu and Numbers

    题解 刚刚学习了高维前缀和 这道题就肥肠简单了 高维前缀和其实原理肥肠简单 就是每次只考虑一维,然后只做这一维的前缀和 最后求出的就是总前缀和了 那么对于这道题 也就很简单了 发现选择的所有数每一位都 ...

  6. hdu 5335 Walk Out (搜索)

    题目链接: hdu 5335 Walk Out 题目描述: 有一个n*m由0 or 1组成的矩形,探险家要从(1,1)走到(n, m),可以向上下左右四个方向走,但是探险家就是不走寻常路,他想让他所走 ...

  7. 题解报告:hdu 1261 字串数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1261 Problem Description 一个A和两个B一共可以组成三种字符串:"ABB ...

  8. Matlab实现Hough变换检测图像中的直线 分类: 图像处理 2014-06-14 22:07 641人阅读 评论(0) 收藏

    Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各 ...

  9. 随机L系统分形树 分类: 计算机图形学 2014-06-01 23:27 376人阅读 评论(0) 收藏

    下面代码需要插入到MFC项目中运行,实现了计算机图形学中的L系统分形树. class Node { public: int x,y; double direction; Node(){} }; CSt ...

  10. Oracle 的备份和恢复

    Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备 份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利 ...