Apache服务器运维笔记(3)----容器部分
1.<IfModule>容器
<IfModule>容器作用于模块,它会首先判断模块是否载入,然后再决定是否进行处理,也就是说只有当判断结果为真时才会执行容器内的指令,相反如果为假,则会全部忽略。可以使用<IfModule 模块名> 或 <IfModule !模块名> 来判断模块是否载入。例如:
() <IfModule !mpm_netware_module>
() <IfModule mpm_netware_module>
在第一种情况下,<IfModule> 容器会判断,如果载入了 mpm_netware_module 模块则不执行容器内的指令。第二种情况下,当 mpm_netware_module 被载入则执行容器内的指令,来看下面的例子:
<IfModule dir_module>
DirectoryIndex index.hmtl
</IfModule>
在这个例子中,<IfModule>会判断 dir_module 是否载入,如果载入则会执行 DirectoryIndex index.html 指令。
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon
Group daemon
</IfModule>
</IfModule>
在上面的例子中,<IfModule>容器会首先判断 mpm_netware_module 模块是否载入,如果没有载入,会继续执行容器的下一条,判断 mpm_winnt_module 模块是否载入,当 mpm_winnt_module 也没有载入时,<IfModule> 容器内的 user 与 group 指令就会被执行。
2.<IfDefine>容器
<IfDefine>容器与<IfModule>容器类似,都是对条件进行判断,只不过<IfDefine> 容器只有当条件判断为真时才会执行,而且它还需要在 httpd 启动时加上特定的参数才能起作用。
(i)
<IfDefine Proxy>
LoadModule proxy_module modules/libproxy.so
</IfDefine>
要向是上述命令生效,启动 httpd 时的语句应该如下所示:
# httpd -D Proxy
(ii)
<IfDefine !Proxy>
LoadModule proxy_module modules/libproxy.so
</IfDefine>
# httpd -D Proxy
在这个例子中,<IfDefine !Proxy> 容器中的 !Proxy 与之前相比多了一个 “!”,于是它与之前的例子完全相反,<IfDefine !Proxy> 容器内的设置会被忽略掉。
3. <Directory> 与 <DirectoryMatch> 容器
<Directory>容器的作用就是让它所封装的指令在指定的目录以及它的子目录中起作用,这个目录必须是一个完整的路径,当然也可以使用通配符 "*"、"?" 匹配目录,也可以使用 "[]" 来确定字符范围,不过无论是"*"、"?" , 还是 "[]" 都不能匹配 "/",例如,<Directory /srv/*/html/index.html> 不能匹配 <Directory /srv/*/index.html>,而只能匹配<Directory /srv/apache/html/index.html> 或是 <Directory /srv/username/html/index.html> 。
<Directory /srv/apache/html/>
Order Deny,Allow
Deny from All
</Directory>
在上面的例子中,禁止了对 /srv/apache/html/ 目录的访问权限,任何请求到 /srv/apache/html/ 的链接都会被拒绝。
除了上面所提到的通配符和"[]" 之外,还可以通过在正则表达式的前面加上"~" 来使用正则表达式进行匹配,例如:
<Directory ~"^/srv/apache[0-9]{2}/html/">
Order Deny,Allow
Allow from All
</Directory>
在上面的例子中,通过使用正则表达式来匹配 /srv/ 下所有以 apache 开头以0至9结尾的两位数字的目录下的 /html/ 目录并允许这些目录被任何用户访问,这个容器的URL请求类似于下面的链接:
http://www.sitename.com/srv/apache00/html http://www.sitename.com/srv/apache01/html ..............................................
.............................................. http://www.sitename.com/srv/apache99/html
<DirectoryMatch> 容器与 <Directory> 容器的作用相似,都是作用于目录,只是 <DirectoryMatch>容器可以直接接受正则表达式,而无须加上"~",例如:
<DirectoryMatch "^/srv/apache[0-9]{2}/html/">
Order Deny,Allow
Allow from All
</DirectoryMatch>
4. <Files> 与 <FilesMatch> 容器
与<Directory>容器作用于目录相对应,<Files>容器只作用于文件,和<Directory>容器一样,也可以使用通配符和"[]" 以及在正则表达式的前面加上"~" 来使用正则表达式进行文件匹配。例如,匹配所有的以 .html 后缀结尾的文件并允许所有用户访问:
<Files "^\.html">
Order Deny,Allow
Allow from All
</Files>
<FilesMatch>容器与<Files>容器类似,只是它除了有<Files>容器的功能外,还能直接使用正则表达式来进行匹配。
<FilesMatch "\.(gif|jpe?g|png)$">
Order Deny,Allow
Allow from All
</FilesMatch>
5. <Location>与<LocationMatch>容器
<Location>与<LocationMatch>容器的作用是对URL进行访问控制。
例如:
<Location /cgi>
Order Allow,Deny
Deny from All
</Location>
在上面的例子中,<Location>容器会首先对到来的URL请求进行匹配,如果是以 /cgi 开头的URL则会全部拒绝,例如:
http://www.sitename.com/cgi
http://www.sitename.com/cgi-bin
http://www.sitename.com/cgi/www/index.html
除此之外,还可以通过<Location>容器将URL请求映射到Apache模块处理器上,例如,使用Apache自带的 mod_status 模块:
<Location /server-status>
SetHandler server-status
</Location>
如果使用上面的容器来设置,那么访问 http://www.sitename.com/server-status时,Apache会将链接交给 mod_status 模块处理,并返回一个Apache服务器运行状态页面。
Apache服务器运维笔记(3)----容器部分的更多相关文章
- Apache服务器运维笔记(5)----容器的处理顺序
容器在配置文件中是可以多次使用的,同时也可以嵌套使用,但是 Apache 在处理容器时却是有一定顺序的,因此在编写容器配置时需要按照一定的顺序来进行,否则Apache处理的结果很可能不是管理员想要的. ...
- Apache服务器运维笔记(2)----使用<IfDefine>容器实现不同的配置
还有一种方法用来实现不同配置的Apache服务器启动,就是在一个配置文件中使用<IfDefine name> ... </IfDefine> 容器来定义,在<IfDefi ...
- Apache服务器运维笔记(2)----使用apxs来进行编译安装 mod_txt 模块
mod_txt是一个非常有趣的模块,它实现了文本的输出过滤器,它可以在指定类型的网页上,将你指定的txt文件显示在网页的头部和尾部. 在它的主页 http://apache.webthing.com/ ...
- Apache服务器运维笔记(1)----运行多个Apache服务器
所有的Apache管理员都会遇到一个问题,就是在一台物理系统上运行多个版本的Apache服务器,或是运行多个同一版本的Apache服务器的副本,对于前者,在编译时为不同版本的Apache指定不同的安装 ...
- Apache服务器运维笔记(6)----目录 文件 网络容器的安全问题
<Directory>.<Files>.<Location> 这三个容器的作用都很相似,都是以容器的形式来封装一组指令对访问进行控制,只是它们的区别在于作用于目录. ...
- Apache服务器运维笔记(4)----服务器扩展部分
在Apache的默认配置文件夹中有一个 extra 目录,这个目录是用来存放 Apache 其他模块的配置文件的.这些文件是 Apache 针对常用的模块而设置并提供的,它们都是通过 Include ...
- 《DevOps故障排除:Linux服务器运维最佳实践》读书笔记
首先,这本书是Linux.CN赠送的,多谢啦~ http://linux.cn/thread-12733-1-1.html http://linux.cn/thread-12754-1-1.html ...
- 运维笔记--postgresql占用CPU问题定位
运维笔记--postgresql占用CPU问题定位 场景描述: 业务系统访问变慢,登陆服务器查看系统负载并不高,然后查看占用CPU较高的进程,发现是连接数据库的几个进程占用系统资源较多. 处理方式: ...
- 谈谈我的windows服务器运维管理
我们开发的页游General War(http://gw.gamebox.com)上线运营也有半年多了,服务器的开发到运维基本都由我一手包办,在服务器上线之后我们又招了一个程序员接手后续功能的开发,而 ...
随机推荐
- POJ_3268 Silver Cow Party 【最短路】
一.题面 POJ3268 二.分析 该题的意思就是给定了一个由每个节点代表农场的有向图,选定一个农场X办party,其余农场的都要去,每个农场的cow都走最短路,走的时间最久的cow耗时多少. 了解题 ...
- 第八次 Scrum Meeting
第八次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/4/12 22:00 20min 大运村1号楼6F 附Github仓库:WEDO 例会照片 工作情况总结(4.12 ...
- 2.7 Go channel
channel简单示例 package main import ( "fmt" "time" ) //channel的创建,发送,接收 func channe1 ...
- Win32创建异形窗口
大家都见过在windows下各种气泡窗口.输入法窗口以及其他一些窗口,这些窗口看起来不像传统的windows窗那样,上面是标题栏,下面是窗口的客户区.这些窗口形状各异,可以是一个多边形,一幅图,甚至是 ...
- epoll中epoll_data_t 中fd和ptr的用法
https://blog.csdn.net/u011123091/article/details/81867078 Linux高性能服务器P152
- 《C++ Primer(第五版)》知识巩固
运行平台:ubuntu 12.04/GCC 4.8.0 第二章:基本内置类型 1.decltype类型指示符 当我们从表达式的类型来推断要定义的类型时,可以使用decltype()来解析:declty ...
- 使用vmware虚拟机安装linux
- Java学习之路(二):流程控制语句
Java流程控制语句 java的流程控制语句: 默认,顺序执行 if...else...条件控制语句 switch 选择语句 for循环 while循环 do...while循环 break,cont ...
- 局域网电脑之间ping不通解决办法
局域网电脑之间ping不通一般都是防火墙的原因.解决办法有以下两种方法 1 第一种方法 1 找到Windows防火墙 2点击更改通知设置 3 关闭专用网络防火墙 现在就可以ping通这台机器了. 2 ...
- C++析构函数(转)
创建对象时系统会自动调用构造函数进行初始化工作,同样,销毁对象时系统也会自动调用一个函数来进行清理工作(例如回收创建对象时消耗的各种资源),这个函数被称为析构函数. 析构函数(Destructor)也 ...