分类: LINUX

在一次面试的时候被问到apache访问控制的问题。由于以前对apache的访问控制都是通过iptalbes来实现的,没有实际在apache上操作过访问控制。所以只知道个大概: 在主配置文件里的directory段里通过allow、deny等指令来实现。虽然答的也算对,但毕竟没有操作过,心理没底。所以今天就将apache 的访问控制详细操作记录下。以便以后使用。
 
apache2.2是通过模块mod_authz_host来实现访问控制的。在2.0版本中此模块叫做mod_access 。
 
下面以apache2.2版本来做介绍:
 
原理篇
 
Apache模块 mod_authz_host
 
说明 提供基于主机名、IP地址、请求特征的访问控制
状态 基本(B)
模块名 authz_host_module
源文件 mod_authz_host.c (2.0版本中为mod_access.c)
兼容性 仅在 Apache 2.1 及以后的版本中可用
 
mod_authz_host模块的指令用于<Directory> <Files> <Location>段以及.htaccess文件中来控制对服务器特定部分的访问。allow和deny指令指出允许那些客户以及不允许那些客户访问服务器。而Order指令设置默认的访问状态并配置AllowDeny指令怎样相互作用。
 
操作篇
 
首先,检查apache是否支持模块mod_authz_host ,如果不支持,重新编译安装以支持这个模块。
 
[root@localhost conf]# /usr/local/EDSV/apache/bin/apachectl -l | grep mod_authz_host.c
  mod_authz_host.c
 
然后设置apache的访问控制。下面以主配置文件里的<Directory>为例:
 
比如要对默认网站进行访问控制。默认网站的DocumentRoot为/usr/local/EDSV/apache/htdocs
 
要允许所有人访问,只拒绝一个IP或者IP段访问:
 
<Directory "/usr/local/EDSV/apache/htdocs">
 
   Order allow,deny
   Allow from all
   deny from 10.112.5.137
 
</Directory>
 
 
要拒绝所有人访问,只允许一个IP或者段访问。
 
 
<Directory "/usr/local/EDSV/apache/htdocs">
 
    Order deny,allow
    deny from all
    allow from 10.112.5.195
 
</Directory>
 
 
设置网站的默认访问状态:
 
<Directory /www>
Order Allow,Deny
</Directory>

这样将会禁止所有对/www目录的访问,因为默认状态将被设置为拒绝。

 
 

Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org

以上设置apache.org域中所有主机,除了foo.apache.org子域包含的主机被拒绝以外,其他都允许访问。而所有不在apache.org域中的主机都不允许访问,因为默认状态是拒绝对服务器的访问。

参考资料:http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_authz_host.html

分类: LINUX apache 访问设置配置的更多相关文章

  1. linux apache虚拟主机配置(基于ip,端口,域名)

    配置环境: linux版本:Centos6.4 httpd版本: [root@centos64Study init.d]# pwd/etc/init.d[root@centos64Study init ...

  2. Linux Apache虚拟主机配置方法

    apache 虚拟主机配置 注意: 虚拟主机可以开很多个 虚拟主机配置之后,原来的默认/etc/httpd/httpd.conf中的默认网站就不会生效了 练习: 主机server0 ip:172.25 ...

  3. linux+Apache开启伪静态配置

    linux+Apache伪静态配置 一.环境准备:CentOS Linux release 7.4.1708 (Core)1.配置源[root@localhost ~]#yum install -y ...

  4. linux Apache CGI 安装配置

    Apache 中的提交了一种利用扩展应用程序执行动态网页的机制. 称为Common Gateway Interface (通用网关接口)简称CGI. 本文假定已安装好linux(本文的linux版本为 ...

  5. linux Apache和php配置

    今天安装Apache httpd web服务器,安装过程分为三部分: (1)./configure (2)make (3)make install (需要root权限) 我的apache 安装在/ho ...

  6. Linux + Apache + MySql+ Php 配置虚拟主机

    win7:------------------------------------------------------------------------ NameVirtualHost *:80&l ...

  7. Linux+Apache+MySQL+PHP配置教程

    有时我们只想搭建LAMP环境做个测试,并不在意目录的和配置是否规范,本教程正是为此想法而写能简单的就不复杂实现最快地搭建LAMP:操作系统为CentOS6.5. 1.安装Apache yum inst ...

  8. Linux apache httpd virtual配置

    必须要关闭 selinux,否则无法访问目录

  9. linux apache添加多站点配置(Ubuntn和Centos)

     Linux Apache 多站点配置 Centos 配置方式: 找到 /etc/httpd/conf/http.conf 添加监听端口,eg: Listen 89 虚拟机配置,一个端口对应一个 &l ...

随机推荐

  1. 【软件技巧】Sublime Text为不同语法定义不同高亮

    Sublime Text默认的语法高亮已经非常美丽了,可是对于个别语言还是有些不爽. 默认高亮规则叫Monokai,能够从Preferences->Settings - Default中看到: ...

  2. CSU 1808 地铁

    题意: ICPCCamp 有 n 个地铁站,用 1,2,-,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 ci 号线,位于站 ai,bi 之间,往返均需要花费 ti 分钟 ...

  3. IOS 实现QQ好友分组展开关闭功能

    贴出核心代码  主要讲一下思路. - (void)nameBtnClick:(myButton *)sender { //获取当前点击的分组对应的section self.clickIndex = s ...

  4. setNeedsDisplay、layoutSubViews

    UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的.而setNeedsDisplay会调 用自动调用drawRect方法,这样可以拿到UIGra ...

  5. Java IO6 :IO总结

    字节流.字符流继承关系 前几篇文章讲解了字节流.字符流的使用,不过Java提供给用户的流类远不止此,限于篇幅原因,没办法一一讲解,而且也没有必要一一讲解,就像我在写博客的时候多次提到的,有问题的时候学 ...

  6. OS X EI Capitan 10.11.4中sudo无法起作用的解决方法

    mac升级到OSX EI Capitan 10.11.4后sudo命令无法起作用,执行任何操作总是显示Operation denied.这是因为在10.11.4中引入了Rootless机制,即就算是R ...

  7. [Head First Python]4.读取文件datafile.txt, 去除两边空格, 存储到列表,从列表格式化(nester.py)后输出到文件man.out,other.out

    datafile.txt  #文件 Man: this is the right room for an argument. Other Man: I've told you once. Man: N ...

  8. layer 模版使用

    function doReply(id){ var url = "/Feedback/Feedback/reply"; var content = $("#reply_c ...

  9. 禁用谷歌字体解决WordPress访问速度过慢问题

    这几天打开网站的时候发现突然变慢了,一直等待加载fonts.googleapis.com,搜索了一下发现很多wordpress网站都出现了 这种现象,原来是因为今日谷歌全线退出中国,貌似谷歌.Gmai ...

  10. 问题汇总-20130927-关于rc.local命令无法执行

    场景:/etc/rc.local有语句 /usr/local/apache/bin/apachectl start mysql cactidb -u root -p123456 -e ' set gl ...