如何查看完整的httpd配置?

Gna*_*afu 65 apache webserver centos apache2 server

我正在试图弄清楚httpd设置的完整配置是什么.

所有配置文件都分散在不同的文件中(/etc/httpd/conf.d,httpd.conf,各种mod配置)

有没有办法列出最终的httpd配置?
就像单个文件中的整个运行设置配置一样?

小智 39

正如arco444注意,您可以使用apachectl -S显示当前从CONFIGS运行VirtualHosts的概述,并apachectl -M显示所有当前加载的模块-我不知道,以显示解析的CONFIGS的详细输出一个工具(并序在启动httpd时解析它们,但我建议您熟悉httpd配置文件一般结构:

特别注意你的问题:'main'apache配置文件位于/etc/httpd/conf/httpd.conf(在CentOS 6中包含的repos的默认httpd安装的第221行的区域中,我假设你使用的是基于你的帖子标签),并且'补充'配置文件位于/etc/httpd/conf.d主要配置文件中并且需要明确包含在主配置文件中.例如,如果您在httpd.conf文件中搜索术语' Include',您将在字母顺序中找到Include conf.d/*.conf包含.conf子目录中所有扩展文件的行conf.d,因此您需要熟悉配置文件解析的重要性.如果可能,有一点.

顺便说一句,如果您使用的是壳基于文本编辑器,如vim的,我建议你在默认情况下启用行号和语法高亮使这些冗长的配置文件是一个容易一点来分析自己和导航-在vim的情况下, ,您可以通过在主目录中创建一个名为.vimrc(或附加到现有文件)的文件来添加以下行:

set nu
syntax on
Run Code Online (Sandbox Code Playgroud)


r_3*_*r_3 11

请将mod_info用于此目的:http://httpd.apache.org/docs/2.2/mod/mod_info.html

唯一不足的是,如果你需要它来恢复已删除的配置并且还没有加载模块,它将无助于你


wol*_*evo 10

Apache HTTP Server文档中所述

如果设置了config define -DDUMP_CONFIG,则mod_info将在服务器启动期间将预先解析的配置转储到stdout。

httpd -DDUMP_CONFIG -k start
Run Code Online (Sandbox Code Playgroud)

DUMP_CONFIG需要mod_info启用:a2enmod info

在Ubuntu中执行以下操作

sudo apache2ctl -DDUMP_CONFIG
Run Code Online (Sandbox Code Playgroud)

如果要删除行号,请执行

sudo apache2ctl -DDUMP_CONFIG | grep -vE "^[ ]*#[ ]*[0-9]+:$"
Run Code Online (Sandbox Code Playgroud)

或重定向到文件

sudo apache2ctl -DDUMP_CONFIG | grep -vE "^[ ]*#[ ]*[0-9]+:$" > /path/to/dump.conf
Run Code Online (Sandbox Code Playgroud)

已知局限性

mod_info通过读取已解析的配置而不是读取原始配置文件来提供其信息。由于创建了解析的配置树,因此存在一些限制:

  • 没有列出立即执行而不是存储在已解析配置中的指令。这些包括ServerRoot,LoadModule和LoadFile。
  • 没有列出控制配置文件本身的伪指令,例如Include和,但包含的配置伪指令是列出的。
  • 评论未列出。(这可能被认为是一项功能。)
  • .htaccess文件中的配置指令未列出(因为它们不构成永久服务器配置的一部分)。
  • 容器指令(例如)已正常列出,但mod_info无法确定close的行号。
  • 由第三方模块(例如mod_perl)生成的指令可能不会列出。

  • 很好的答案。为了完整起见: apa​​che2ctl -DDUMP_CONFIG -t 可用于不需要 root 权限的试运行 (2认同)