列出 Apache vhost 配置的选项(鸟瞰)

列出 Apache vhost 配置的选项(鸟瞰)

我正在使用带有 Apache2 和多个 vhosts 的 Ubuntu Linux,它们位于/etc/apache2/sites-available并从 进行符号链接(激活)/etc/apache2/sites-enabled。Ubuntu 上的默认设置。

我想知道是否有可用于 Apache 的通用工具来列出所有 vhost 信息:

  • 所有可用站点的列表
  • 所有已启用站点的列表
  • Apache 使用的所有已启用站点的列表(“重新加载”后启用的站点)

在这些列表中,我希望看到:

  • 虚拟主机的域(和端口)。
  • vhost 的目录。
  • vhost 文件中是否存在(语法)错误。

显然我可以做一些 grepping、sed-ing 和 awking 来获取这些信息,但我很确定这之前已经在某个地方正确地完成了:)

答案1

我所知道的最接近的工具是apachectl -S

此命令将列出当前配置中定义的所有虚拟主机,无论 Apache 是否正在运行。信息包括 IP 地址、端口、ServerName 指令的值、配置文件名以及哪个虚拟主机是默认的。

这是一个通用的 Apache 工具,可以在 Redhat/CentOS、Mac OS X、Solaris 以及您喜欢的任何其他 Unix 上使用,因此它不知道基于 Debian 的 sites-available、sites-enabled、mods-available 和 mods-enabled 目录。

apachectl -S没有列出 DocumentRoot 指令,因为它不是必需指令,并且可能不存在于某些虚拟主机中。它也没有列出任何 ServerAlias 指令,因为它们的数量可能不限。由于它们(以及 ServerName 指令)可以包含通配符,因此列出域可能会很麻烦。

apachectl -t将进行语法检查。

根据您的版本,您可能必须使用apache2ctl -S

答案2

ls我认为列出可用且已启用的站点可以在适当的目录中恢复使用。

这可能听起来很愚蠢,但想想你不能通过名称来信任一个文件:它的内容可能包含多个 VirtualHosts。

但是,如果您想显示 Apache 当前使用的配置,您可能需要查看该-S标志。

以 root 身份登录后,这个命令行应该是一个很好的开始:

# source /etc/apache2/envvars && apache2 -S

来源:man apache2

相关内容