动态禁用/省略Apache配置指令(DRY)

时间:2015-02-24 19:48:32

标签: apache apache2 ssl-certificate dry vhosts

我正在研究运行Apache的产品,我正在努力使配置更加干燥 - 现在有许多不同的vhost配置在不同情况下加载但是90%相同,这非常繁琐处理变更需求时。我不认为Apache真的是考虑到这种动态环境而设计的,但不管怎么说,无论如何我都在这里。

所以我首先转向环境变量 - 我有一个小的启动脚本,它确定必要的配置并将变量转储到/etc/apache2/envvars(由apache2ctl加载,类似于Ubuntu) 。这允许我做这样的事情:

envvars

export    MYKEY='/path/to/mykey'
export   MYCERT='/path/to/mycert'
export MYBUNDLE='/path/to/mybundle'

vhost config:

SSLCertificateKeyFile ${MYKEY}
SSLCertificateFile    ${MYCERT}
SSLCACertificateFile  ${MYBUNDLE}

这样可以正常工作,但只有MYKEY和< al。,是引用非空文件的非空变量。例如,在某些配置中,不需要CA捆绑包,因此我尝试将MYBUNDLE指向/dev/null。 Apache认为这是“语法错误”,因为/dev/null是一个空文件,并且拒绝启动。

我的问题:有没有办法可以在Apache配置中动态禁用/省略配置指令(基于环境变量或类似的机制),而不必为每种可能的场景维护单独的文件?

替代问题:我有没有办法以Apache认为无效的方式为这个特定指令(SSLCACertificateFile)提供空值/证书?

Ubuntu 12.04.5
Apache 2.2.22

1 个答案:

答案 0 :(得分:1)

看起来您想要的是配置的管理工具。

现在我不确定您的部署频率,但您可能会制作一个为您生成模板的脚本?

如果您有更大的需求,可以考虑使用自动化软件并使用某种模板吗?我正在考虑像厨师(https://www.chef.io/)或木偶(http://puppetlabs.com/)或......他们都支持模板,你可以根据环境/服务器/情绪为不同的价值提供价值。