本文目录:
1.1 httpd命令和apachectl命令
1.2 配置文件规则和常见指令
1.2.1 Listen指令
1.2.2 ServerRoot指令
1.2.3 DocumentRoot指令
1.2.4 DirectoryIndex指令
1.2.5 ServerName和ServerAlias
1.2.6 Include指令
1.2.7 Define和UnDefine指令
1.2.8 VirtualHost指令
1.2.9 Options和AllowOverride指令
1.2.10 Require指令
1.2.11 长连接相关指令
1.3 容器类指令
1.3.1 容器< Directory >和< Files >
1.3.2 容器< Location >
1.3.3 < IfDefine >、< IfModule >和< IfVersion >条件判断
1.3.4 < If >、< ElseIf >和< Else >容器
1.4 配置文件的合并规则
本文主要介绍介绍的是httpd的配置文件,包括一些最基本的指令、配置规则、配置合并规则。以下指令完全来自官方手册以及我自己的总结和整理。
1.1 httpd命令和apachectl命令 [root@xuexi ~]# httpd -h Usage: httpd [-D name] [-d directory] [-f file] [-C "directive"] [-c "directive"] [-k start|restart|graceful|graceful-stop|stop] [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X] Options: -D name : 定义一个在< IfDefine name >中使用的name,以此容器中的指令 -d directory : 指定ServerRoot -f file : 指定配置文件 -C "directive" : 指定在加载配置文件前要处理的指令(directive) -c "directive" : 指定在加载配置文件后要处理的指令 -e level : 显示httpd启动时的日志调试级别 -E file : 将启动信息记录到指定文件中 -v : 显示版本号 -V : 显示编译配置选项 -h : 显示帮助信息 -l : 显示已编译但非动态编译的模块,即静态编译的模块 -L : 显示静态模块可用的指令列表 -t -D DUMP_VHOSTS : 显示虚拟主机的设置信息 -t -D DUMP_RUN_CFG : 显示运行参数 -S : 等价于-t -D DUMP_VHOSTS -D DUMP_RUN_CFG。在调试如何解析配置文件时非常非常有用 -t -D DUMP_MODULES : 显示所有已被加载的模块,包括静态和动态编译的模块 -M : 等价于-t -D DUMP_MODULES -t : 检查配置文件语法 -T : 不检查DocumentRoot,直接启动 -X : 调试模式,此模式下httpd进程依赖于终端 -k : 管理httpd进程,接受start|restart|graceful|graceful-stop|stopapachectl命令和httpd命令基本相同。httpd接受的选项,apachectl都接受。但apachectl还可以省略"-k"选项直接管理httpd进程。
apachectl [-k] start:按照默认路径,读取默认配置文件,并启动httpd。
apachectl [-k] stop:关闭httpd进程。
apachectl [-k] restart:重启httpd进程。
apachectl [-k] graceful-stop:graceful stop,表示让已运行的httpd进程不再接受新请求,并给他们足够的时间处理当前正在处理的事情,处理完成后才退出。所以在进程退出前,日志文件暂时不会关闭,正在进行的连接暂时不会断开。
apachectl [-k] graceful:graceful restart,即graceful-stop+start。
apachectl [-k] configtest:语法检查。
在systemd环境下,还可以使用apacectl status或systemctl status httpd查看httpd进程的详细信息。
1.2 配置文件规则和常见指令httpd的核心体现在配置文件,各种功能都通过配置文件来实现。使用rpm包安装的httpd默认配置文件为/etc/httpd/conf/httpd.conf。可以使用httpd -f config_path指定要加载的配置文件。
配置文件中全是一些指令配置,每个指令都是某个模块提供的。以下是配置文件的一些规则:
指令生效方式是从上往下读取,这一点非常非常重要。很多指令的位置强烈建议不要改变,例如Include conf.d/*.conf指令建议不要移动位置。
"#"开头的行为注释行,只能行头注释,不能行中注释。
对大小写不敏感,但是建议指令名称采用"驼峰式"命名。例如ServerRoot,DocumentRoot。
一行写不下的可以使用"\"续行,但是"\"后不能有任何字符,包括空格也不允许。
指令配置格式为"Directive value",例如"ServerRoot /etc/httpd",如果value中包含特殊字符或空格,则必须使用双引号包围。
由于可以通过Include指令包含其他配置文件,又支持各种路径的容器,所以在httpd启动时会先进行配置文件的合并。理解合并规则非常重要,具体见配置文件合并规则。
1.2.1 Listen指令