将 httpd 拆分为较小的文件

将 httpd 拆分为较小的文件

你好,我需要从我的 httpd.conf 中提取每个 VirtualHosts 到单独的文件中,以便于管理。

原始的 httpd.conf 。

..
<VirtualHost *:XXXX>
  SuexecUserGroup user1 groupX
  ...
</VirtualHost>
<VirtualHost *:XXXY>
  SuexecUserGroup user2 groupY
  ...
</VirtualHost>
<VirtualHost *:XXYY>
  SuexecUserGroup user3 groupZ
  ...
</VirtualHost>
...

我想要有如下文件: - XXXX_user1.conf 包含:

Listen XXXX
<VirtualHost *:XXXX>
  SuexecUserGroup user1 groupX
  ...
</VirtualHost>

- XXXY_user2.conf 包含:

Listen XXXY
<VirtualHost *:XXXY>
  SuexecUserGroup user2 groupY
  ...
</VirtualHost>

听起来有点复杂,但我有 500 个要手工完成 ;(

非常感谢您的回答

答案1

尝试一下:

#!/usr/bin/gawk -f
BEGIN {
    RS = "</VirtualHost>\n"
}
{
    prefix = gensub("*:([^>]*)>", "\\1", "1", $2)
    filename = prefix "_" $4 ".conf"
    print "Listen " prefix "\n" $0 "\n" RS > filename
}

将其保存在一个名为“httpdsplit”的文件中,然后执行以下操作:

$ chmod u+x httpdsplit
$ ./httpdsplit httpd.conf

答案2

虽然您没有提到,但这看起来像 apache httpd.conf。虽然我推荐现有的拆分文件的答案,但还有另一种选择。

如果Apache 服务器由以下组件构建mod_perl如果您了解(或愿意学习)Perl,请记住它mod_perl与 apache 的所有方面(包括配置)紧密相关。您可以使用 Perl 节编写配置,并在 perl 本身内生成 VirtualHost 配置。

相关内容