Configuration Files

本文档介绍了用于配置 Apache HTTP Server 的文件。

主要配置文件

Related Modules Related Directives
mod_mime <IfDefine>
Include
TypesConfig

通过将directives放在纯文本配置文件中来配置 Apache HTTP Server。主要配置文件通常称为httpd.conf。该文件的位置在编译时设置,但可以用-f命令行标志覆盖。另外,可以使用Include指令添加其他配置文件,并且通配符可用于包含许多配置文件。任何指令都可以放置在任何这些配置文件中。仅在 httpd 启动或重新启动时,主配置文件的更改才能被 httpd 识别。

服务器还读取一个包含 mime 文档类型的文件。文件名由TypesConfig伪指令设置,默认情况下为mime.types

配置文件的语法

httpd 配置文件每行包含一个指令。反斜杠“ \”可以用作一行的最后一个字符,以指示该指令 continue 到下一行。反斜杠和行尾之间不得有其他字符或空格。

指令的参数由空格分隔。如果参数包含空格,则必须将该参数用引号引起来。

配置文件中的指令不区分大小写,但是指令的参数通常区分大小写。以井号字符“#”开头的行被视为 Comments,并被忽略。Comments 可能 与配置指令位于同一行。在指令之前会出现空格,因此为了清楚起见,您可以缩进指令。空行也将被忽略。

可以使用${VAR}语法在配置文件行中使用由_或 shell 环境变量定义的变量的值。如果“ VAR”是有效变量的名称,则将该变量的值替换为配置文件行中的该位置,然后 continue 进行处理,就如同直接在配置文件中找到该文本一样。用Define定义的变量优先于 Shell 环境变量。如果未找到“ VAR”变量,则字符${VAR}保持不变,并记录警告。变量名不能包含冒号“:”字符,以避免与RewriteMap的语法冲突。

只有在服务器启动之前定义的 Shell 环境变量才能在扩展中使用。在配置文件本身中定义的环境变量(例如,使用__)生效太迟,无法用于在配置文件中进行扩展。

常规配置文件中的变量替换和连接任何连续的行之后,一行的最大长度约为 16 MiB。在.htaccess files中,最大长度为 8190 个字符。

您可以使用apachectl configtest-t命令行选项在不启动服务器的情况下检查配置文件中的语法错误。

您可以使用mod_info-DDUMP_CONFIG来转储配置,并解析所有包含的文件和环境变量,并删除所有 Comments 以及不匹配的<IfDefine><IfModule>部分。但是,输出不会反映重复指令可能发生的合并或覆盖。

Modules

Related Modules Related Directives
mod_so <IfModule>
LoadModule

httpd 是模块化服务器。这意味着核心服务器中仅包含最基本的功能。扩展功能可以通过modules获得,这些功能可以加载到 httpd 中。默认情况下,服务器在编译时会包含base个模块集。如果将服务器编译为使用dynamically loaded模块,则可以分别编译模块,并可以使用LoadModule指令随时添加模块。否则,必须重新编译 httpd 以添加或删除模块。通过将特定配置模块包含在<IfModule>块中,可以根据特定模块的存在将其包含在其中。但是,不需要<IfModule>块,并且在某些情况下可能掩盖了您缺少重要模块的事实。

要查看当前将哪些模块编译到服务器中,可以使用-l命令行选项。您还可以使用-M命令行选项查看动态加载了哪些模块。

指令范围

Related Modules Related Directives
<Directory>
<DirectoryMatch>
<Files>
<FilesMatch>
<Location>
<LocationMatch>
<VirtualHost>

放置在主配置文件中的指令适用于整个服务器。如果只想更改一部分服务器的配置,则可以通过将指令放在<Directory><DirectoryMatch><Files><FilesMatch><Location><LocationMatch>部分中来限定指令的范围。这些部分将它们所包含的指令的应用限制为特定的文件系统位置或 URL。它们也可以嵌套,以实现非常精细的配置。

httpd 可以同时服务许多不同的网站。这称为Virtual Hosting。也可以通过将指令放在<VirtualHost>部分中来确定范围,从而使它们仅适用于对特定网站的请求。

尽管大多数指令都可以放在任何这些节中,但是某些指令在某些情况下没有意义。例如,控制进程创建的指令只能放在主服务器上下文中。要查找可以在哪些节中放置哪些指令,请检查指令的Context。有关更多信息,我们在目录,位置和文件部分的工作方式上提供了详细信息。

.htaccess Files

Related Modules Related Directives
AccessFileName
AllowOverride

httpd 允许通过放置在 Web 树中的特殊文件来分散 Management 配置。特殊文件通常称为.htaccess,但是可以在AccessFileName指令中指定任何名称。放置在.htaccess文件中的指令适用于放置文件的目录以及所有子目录。 .htaccess文件遵循与主要配置文件相同的语法。由于每次请求都会读取.htaccess文件,因此对这些文件所做的更改将立即生效。

要查找可以放在.htaccess文件中的指令,请检查指令的Context。服务器 Management 员通过在主配置文件中配置AllowOverride指令,进一步控制可以在.htaccess文件中放置哪些指令。

有关.htaccess文件的更多信息,请参见.htaccess tutorial

首页