注:此文复制而来,只为便于学习!php
Apache的配置指令分为两类:一类由核心模块如core,http等使用,必须位置httpd.conf文件中,另外一类由标准或三方模块使用html
1 基本配置指令web
httpd.conf中的配置能够三为分部分:主服务器部分、容器配置部分、扩展部分正则表达式
主服务器部分:用来配置服务的核心参数,做为全局指令,如定义主机名、监听端口等apache
容器配置部分:以<容器名>...</容器名>样式包围的配置部分,如虚拟主机、目录、文件权限windows
扩展部分:以include方式加载的外部配置文件安全
1.1 主服务器配置服务器
ServerName 定义主机名,若无,则以IP地址代替网络
ServerRoot 定义httpd服务器进程所安装在的根目录,在选择不一样的layout时,其值是不一样的工具
DocumentRoot 定义提供页面文档的根目录,此目录是收到URL请求的根目录,必须用绝对路径,若路径中包含空格则须要加引号
ServerAdmin 指定网站管理员的邮件地址
Alias/ScriptAlias 定义别名
User/Group 指定服务器进程运行的用户名及组
Listen 指定服务器监听的端口
LoadModule/LoadFile 加载模块或目标文件
ErrorDocument code content 指定错误码的处理页面或内容,页面能够是脚本或字符串
Options 用于指定在目录的处理特性,其有如下值,这些值能够经过+ -来组合
ExecCGI 容许当前目录下执行CGI脚本
Includes 容许使用SSI功能
Indexes 开户索引功能,即目录若没有由DirecotryIndex指令指定索引文件,则返回请求目录的文件列表
FollowSymLinks 容许目录使用符号连接
ALL 除MultiViews以外 的全部特性
MultiViews 启用mod_negotiations模块提供的多视图功能
1.2 容器配置部分
值得注意的是容器配置能够根据需求嵌套。
<ifModule !模块名> 判断module是否加载,并根据真假决定是否执行容器内配置,模块名能够加!表示未加载
<ifDefine Def> 判断Def是否认义,并根据真假决定是否执行容器内配置,Def前加!表示未定义
<Directory dir> 区域中的配置仅对dir生效,用来限定配置范围或覆盖全局配置。目录能够是完整路径,也能够是通配符匹配目录,须要注意的是* ? []不能跨/
若是须要使用正则匹配,则在表达式前加 ~
<DirectoryMatch> 同上,只是其接受正则表达式时,不须要加~
<File> 只针对文件定义
<FileMatch> 同上
<Location> 对网络URL进行访问控制
<LocationMatch> 同上,可接受正则匹配
须要注意的地方是,容器规则在应用时是有优先级的,apache处理是从优先级高到低以下处理:direcotry .htacess direcotryMatch file fileMatch Location 高优先级规则会使得低优先级规则失效。同时Directory容器处理顺序按目录名称的字典排序进行。这些规则混用或使用不当会形成安全性问题,所以不建议使用复杂的规则。 对于文件和目录在使用时要注意限制符号连接。
1.3 扩展部分
在Apache默认配置文件夹中有一个extra目录,其中定义了其余模块的经常使用配置,能够经过Include指令加载进来
常见的配置功能以下
httpd-autoindex.conf 自动索引配置
httpd-info.conf mod_status info模块的配置
httpd-mpm.conf mpm的配置
httpd-ssl.conf ssl配置
httpd-userdir.conf 用户目录配置,用于在一台服务器上为多个用户提供Web站点,将用户映射到其本身的目录下
httpd-vhosts.conf 虚拟主机配置
1.3.1 mod-dir
此模块支持用户指定index文件的功能,配置以下:
DirectoryIndex index.html index.PHP
这样,当用户访问根目录时,若下面存在对应的文件,则服务器会重给用户重定向到索引文件页面
1.3.2 mod-autoindex
1.3.3 mod-userdir
1.4 配置工具
本地化工具webmin须要安装到本地,并经过网页打开,能够进行GUI方式的设置
windows下zecos Apacheconf能够SSH方式读取远程HTTPD.CONF来显示配置
2 虚拟主机配置
虚拟主机可让咱们在一个机器上开放多个网站,实现经过不一样的域名或IP访问时定向到不一样的网站页面上。
2.1 命名虚拟主机
基于域名的虚拟主机功能开启后,服务器能够根据请求中的HOST头部来定向到不一样的站点,须要DNS配置协做方可应用。
其配置比较简单,下面的示例为一个简单的例子
这里创建了一个网站,其监听本地全部80的请求,但此虚拟主机只提供关于dummy.example.com的网站服务,因为采用了别名,也能够采用别名来访问,但前提是配置了DNS的相关记录。须要注意的是,若是采用IPV6地址,则地址应该放在中括号中。
基于命名的虚拟主机不支持HTTP1.0以及以前的协议,而且不支持SSL协议 (SSL协议须要独立的主机名与IP匹配)。若须要支持SSL,则须要监听443端口,并在此端口上创建站点服务。具体能够参考httpd_ssl.conf文件的示例。
2.2 IP虚拟主机
IP虚拟主机须要咱们的服务器主机配置多个IP地址,咱们将不一样的网站配置到不一样的IP地址上,IP地址能够是同一个物理网卡的多个虚拟接口地址。
其配置方式以下:
2.3 动态虚拟主机的方法
其余的方法如经过vhost_alias_module模块或者rewrite_module创建大量虚拟主机,通常网站提供商才会用到这种功能,不在此详细描述,能够参考apache的相关文档。
3 性能相关配置
4 日志控制