排查Apache配置问题时,最麻烦的不是改配置,而是确认配置到底有没有生效。配置文件分散在多个Include中,虚拟主机又可能有覆盖关系,肉眼翻文件很容易遗漏。Apache自带的mod_info模块就是为了解决这个问题而存在的,它把服务器当前运行时的完整配置以网页形式输出,你看到的就是Apache真正加载的内容,而不是你以为的内容。

mod_info是什么,能显示哪些信息
mod_info是Apache的一个信息输出模块,它本身不参与请求处理,唯一的职责就是把当前服务器的运行时配置渲染成一个HTML页面。启用后访问server-info路径,就能看到分层级的配置树,包括主服务器配置、每个已加载模块的指令、所有虚拟主机合并后的最终配置等。
它输出的信息大体分几类:一是当前编译进或动态加载的所有模块列表,每个模块还能单独展开查看它读取到的指令值;二是主配置与虚拟主机配置的继承合并结果,这点特别有用,比如你在某个VirtualHost里覆盖了DocumentRoot,页面上会清楚显示覆盖前后的值;三是请求处理各阶段挂钩的模块顺序,能看出哪个模块先介入处理。
需要注意的是,mod_info显示的是运行时快照。如果修改了配置但没有graceful重启,页面上看到的仍然是旧配置,这一点在排查时经常被忽略。
如何启用和配置mod_info
mod_info默认没有启用。以Linux下的编译安装为例,先确认modules目录下是否存在mod_info.so,然后在主配置文件中加载并配置处理器:
# httpd.conf 中加载模块
LoadModule info_module modules/mod_info.so
# 设置访问入口和权限
<Location /server-info>
SetHandler server-info
Require ip 192.168.1.0/24
Require local
</Location>上面的配置把信息页面挂在了/server-info路径下,并限制只有内网和本机可以访问。改完之后执行apachectl configtest确认语法无误,再执行apachectl graceful平滑重启,浏览器访问http://your-server/server-info即可看到完整配置。
访问控制是重点。mod_info输出的是服务器的全部配置细节,一旦暴露到公网,等于把目录结构、模块加载情况、内部URL规则全部拱手送人。旧版本常用Allow from语法,Apache 2.4之后改用Require,两种写法不要混用,混用会导致权限判断失效。如果只是临时排查,也可以在查看完毕后直接注释掉LoadModule那一行,彻底关闭入口。
如果想进一步细分权限,比如允许不同管理员查看不同模块的信息,可以用Require user配合认证模块,或者在Location内再加一层AuthType Basic认证,双重保护。
常用查询参数与使用技巧
直接访问server-info看到的是全部信息的总览,页面较长。mod_info支持几个查询参数帮助快速定位:?<module-name>可以只看某个模块的配置,例如访问server-info?mod_ssl.c只显示SSL相关指令;在URL末尾追加?server只看主服务器配置,追加?list则只看模块列表。
实际排查时有个很实用的技巧:先用?list确认目标模块是否真的加载了。很多人配置了rewrite规则不生效,折腾半天最后发现是mod_rewrite.so压根没Load,这种情况用server-info一分钟就能确认。
另一个技巧是对比虚拟主机的合并配置。在server-info页面里每个VirtualHost单独成块,你可以直观看到某条指令在主配置中的值和在具体虚拟主机中的值,判断覆盖关系是否符合预期。这比在多个配置文件之间来回跳转查Include要高效得多。
生产环境使用的注意事项
首先要明确一点:mod_info页面对性能影响极小,但安全影响很大。生产环境如果要长期保留,务必做到三点:一是用Require限制来源IP或启用认证;二是不要使用默认的server-info路径名,改成不容易猜到的随机路径,减少被扫描命中的概率;三是配合Apache的日志监控,留意该路径是否被异常访问。
其次,mod_info和mod_status是经常搭配使用的两个模块。mod_status展示的是运行时连接和负载情况,mod_info展示的是配置情况,一个看状态一个看配置,配合起来基本能覆盖大部分排查场景。两者可以放在同一个Location配置段外的不同路径下,分别控制权限。
最后提醒一点,如果你的服务器前面有反向代理或者CDN,记得确认server-info路径不会被外部缓存或转发,否则即使Apache层限制了IP,代理层也可能把页面内容缓存下来造成泄露。稳妥的做法是在代理层直接屏蔽这个路径,双重设防。
Apache mod_info服务器配置httpd.conf修改时间:2026-09-13 02:00:26