本文将描述用于配置Apache HTTP服务器的文件。
通过将指令放在纯文本配置文件中来配置Apache。主配置文件通常是一个名称为:httpd.conf
的文本文件。此文件的位置在编译时设置,但可以使用-f
命令行标志覆盖。此外,可以使用Include
指令添加其他配置文件,并且可以使用通配符包含许多配置文件。任何指令都可以放在任何这些配置文件中。只有Apache在启动或重新启动时才能识别对主配置文件的更改。
服务器还读取包含mime
文档类型的文件; 文件名由TypesConfig
指令设置,默认为mime.types
。
Apache配置文件每行包含一个指令。反斜杠\
可以用作一行的最后一个字符,表示该指令继续到下一行。反斜杠和行尾之间不能有其他字符或空格。
配置文件中的指令不区分大小写,但指令的参数通常区分大小写。以井号#
开头的行被视为注释,并被忽略。注释可能不会与配置指令包含在同一行中。忽略指令之前出现的空格,因此为了清楚起见,您可以缩进指令。空行也被忽略。
可以使用语法${ENVVAR}
在配置文件行中使用shell环境变量的值。如果“ENVVAR”是有效环境变量的名称,则该变量的值将替换为配置文件行中的该位置,并继续处理,就好像该文本直接在配置文件中找到一样。(如果未找到ENVVAR变量,则字符${ENVVAR}
保持不变,以供配置文件处理中的后续阶段使用。)
在环境变量替换之后,连接任何连续行并删除前导和尾随空格的配置文件中的行的最大长度为8192
个字符。
可以使用apachectl configtest
或-t
命令行选项检查配置文件中的语法错误,而无需启动服务器。
Apache是一个模块化服务器。这意味着核心服务器中只包含最基本的功能。可以通过可以加载到Apache的模块获得扩展功能。默认情况下,服务器在编译时包含一组基本模块。如果服务器编译为使用动态加载的模块,则可以单独编译模块,并使用LoadModule
指令随时添加模块。否则,必须重新编译Apache以添加或删除模块。配置指令可以通过将它们封装在<IfModule>
块中而以包含特定模块的条件为条件。
要查看当前编译到服务器中的模块,可以使用-l
命令行选项。
放置在主配置文件中的指令适用于整个服务器。如果您只想更改服务器的一部分配置,可以将指令放在<Directory>
,<DirectoryMatch>
,<Files>
,<FilesMatch>
,<Location>
和<LocationMatch>
部分中。这些部分限制了它们包含在特定文件系统位置或URL中的指令的应用。它们也可以嵌套,允许非常精细的粒度配置。
Apache可以同时为许多不同的网站提供服务。这称为虚拟主机。指令也可以通过将它们放在<VirtualHost>
部分中来限定范围,以便它们仅适用于特定网站的请求。
尽管大多数指令可以放在这些部分中的任何部分中,但某些指令在某些情况下没有意义。例如,控制进程创建的指令只能放在主服务器上下文中。要查找哪些指令可以放在哪些部分中,请检查指令的上下文。
Apache允许通过放置在Web树中的特殊文件来分散管理配置。特殊文件通常称为.htaccess
,但可以在AccessFileName
指令中指定任何名称。放置在.htaccess
文件中的指令适用于放置文件的目录和所有子目录。.htaccess
文件遵循与主配置文件相同的语法。由于每次请求都会读取.htaccess
文件,因此对这些.htaccess
文件所做的更改会立即生效。
要查找可以放在.htaccess
文件中的指令,请检查指令的上下文。服务器管理员通过在主配置文件中配置AllowOverride
指令,进一步控制可以在.htaccess
文件中放置哪些指令。