来源:赛迪网 作者:kit
配置文档
官方发布的 Apache 的主配置文档是 httpd.conf, 服务器还会读取一个包含 MIME 文档类型的文档,其文档名由 TypesConfig 指令确定,默认值是mime.types 。
Ubuntu/Debian 下的 Apache 的主配置文档是 /etc/apache2/apache2.conf, 包含 MIME 文档类型的文档是 /etc/mime.types 。
此外,为了按逻辑分割配置,还能够用 Include 指令和通配符附加许多其他配置文档。Ubuntu 下附加了如下的配置文档:
# 包含动态模块的配置:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
# 包含用户自己的配置:
Include /etc/apache2/httpd.conf
# 包含端口监听的配置:
Include /etc/apache2/ports.conf
# 包含一般性的配置语句片断:
Include /etc/apache2/conf.d/[^.#]*
……
# 包含虚拟主机的配置指令:
Include /etc/apache2/sites-enabled/[^.#]*
配置文档的语法
*每一行包含一个指令,在行尾使用反斜杠”\”能够表示续行
*配置文档中的指令不区分大小写,但是指令的参数 (argument) 通常区分大小写
*以 ”#” 开头的行被视为注解并在读取时被忽略。注解不能出现在指令的后边
*空白行和指令前的空白字符将在读取时被忽略,因此能够采用缩进以保持配置层次的清楚
无论是主配置文档还是用 Include 语句包含的配置文档,都应该遵从 Apache 的配置语法。
Apache 的模块
Apache 是模块化的服务器,他有两种编译方式:
*静态编译:将核心模块和所需要的模块一次性编译
o
长处:运行速度快
o
缺点:要增加或删除模块必须重新编译整个 Apache
*动态编译:只编译核心模块和 DSO (动态共享对象)模块 — mod_so
o
长处:各模块能够单独编译,并可随时用 LoadModule 指令加载,用于特定模块的指令能够用 指令包含起来,使之有条件地生效。
o
缺点:运行速度稍慢
Ubuntu 中的 Apache 是动态编译的。在 Ubuntu 下配置模块:
1.视需要修改 mods-available/ 目录下相关模块的配置文档
2.使用 a2enmod 命令启用模块; 使用 a2dismod 命令停用模块
例如: 启用 rewrite 模块能够用如下命令:
sudo a2enmod rewrite
停用 cgi 模块能够用如下命令:
sudo a2dismod cgi
指令的作用域
从指令的作用域来划分,Apache 中有两类指令:
*普通指令:普通指令对整个服务器都有效
*容器指令:能够放置在容器内对特定的访问资源实施额外的配置,他只对特定的访问资源有效
Apache 中常用的容器包括:
*和 : 用于对指定的目录实施额外的配置
*和 : 用于对指定的文档实施额外的配置
*和 : 用于对指定的 URL 实施额外的配置
*容器都是成对出现的,任何在容器中使用的配置指令都应该放置在 和 内,如:
……
*以上任何带 “Match” 的容器指令和其相应的不带 “Match” 的容器指令功能相同,只是在描述资源时能够使用正则表达式
*这些容器还能够进行嵌套,以进行更精细的配置
此外,Apache 还具备同时支持多个站点的能力,称为虚拟主机。放置在 容器中的指令仅对特定虚拟主机有效。
虽然大多数指令能够包含在任意的容器中,但是也用特例。要查询一个指令能够被应用于哪些配置段中,能够在 Apache 手册中查看该指令的 作用域 项。
基于目录的配置文档
Apache 除了使用主配置文档之外,还能够使用分布在整个网站目录树中的特别文档来进行分散配置。这样的特别配置文档称为基于目录的配置文档, 这些特别的文档通常叫 .htaccess ,但是也能够用 AccessFileName 指令来改变他的名字。
显然,基于目录的配置文档 (.htaccess 文档)中指令的作用域是存放他的那个目录及其任何子目录。
*.htaccess 文档的语法和主配置文档相同。放在 容器中的指令都能够出现在 .htaccess 文档中,具体能出现哪些指令由主配置文档中的 AllowOverride 指令来决定
*由于客户对服务器的每次访问请求都会读取.htaccess文档,所以对这些文档的修改会立即生效,即无需使服务器加载配置文档或重新启动。
基本配置指令
服务器标识指令
*ServerName : 服务器用于辨识自己的主机名和端口号
*ServerAdmin : 服务器返回给客户端的错误信息中包含的管理员邮件地址
*ServerSignature : 配置服务器生成页面的页脚(错误信息、mod_proxy的ftp目录列表、mod_info的输出)
*ServerTokens : 控制了服务器回应给客户端的”Server:“应答头是否包含关于服务器操作系统类型和编译进的模块描述信息
*UseCanonicalName : 决定 Apache 如何构造 URL 中 SERVER_NAME 和 SERVER_PORT 的指令。
文档定位指令
*DocumentRoot : 组成网络上可见的主文档树的根目录
*ErrorLog : 存放错误日志的位置
*LockFile : 当 AcceptMutex 指令的值是 fcntl 或 flock 的时候,Apache 使用的锁文档的位置
*PidFile : 配置服务器用于记录父进程(监控进程) PID 的文档。
*ScoreBoardFile : 存储子进程协调数据(coordination data)的文档(Apache 使用 scoreboard 在父进程和子进程之间进行通信)
*ServerRoot : 指定服务器安装的基础目录
收紧 Ubuntu 下的 Apache 配置
对于实际的产品服务器,应该首先收紧 Apache 的配置。为此能够在 /etc/apache2/conf.d/ 目录下创建一个新的 local_configs.conf 文档添加如下的配置:
/etc/apache2/conf.d/local_configs.conf
# 配置 ServerName
ServerName www.jamond.net
# 对 / 进行保护
# Forbid default access to file system locations
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



