我的工作運行Apache的一個產品,我試圖使配置更幹 - 現在有,它們會在不同的情況下裝載許多不同的虛擬主機CONFIGS但是90%相同的,當需要做出改變時,這是非常繁瑣的。我不認爲阿帕奇真的是在設計這種動態的環境,但無論如何,在這裏我是無論如何。動態禁用/省略的Apache配置指令(DRY)
因此,我首先轉向了環境變量 - 我有一個小引導腳本,用於確定必要的配置並將變量轉儲到/etc/apache2/envvars
(在Ubuntu上由apache2ctl
和類似工具加載)。這讓我做這樣的事情:
envvars
:
export MYKEY='/path/to/mykey'
export MYCERT='/path/to/mycert'
export MYBUNDLE='/path/to/mybundle'
虛擬主機配置:
SSLCertificateKeyFile ${MYKEY}
SSLCertificateFile ${MYCERT}
SSLCACertificateFile ${MYBUNDLE}
這工作得很好,但只只要MYKEY
,&人,是非。引用非空文件的空變量。例如,在某些配置中,不需要CA捆綁包,因此我試圖將MYBUNDLE
指向/dev/null
。 Apache認爲這是'語法錯誤',因爲/dev/null
是一個空文件,並拒絕啓動。
我的問題:有沒有什麼辦法可以動態禁用/省略Apache的配置配置指令(根據環境變量或類似的機制),而不必保留單獨的文件中爲每一個可能的場景?
替代問題:有沒有什麼辦法可以給Apache提供一個空的值/證書給這個特定的指令(SSLCACertificateFile
),Apache的方式不會認爲是無效的?
的Ubuntu 12.04.5
的Apache 2.2.22
這些不是服務器被部署到但在持有其本地重新配置,並動態地基於它們的(有限的)輸入客戶的,而網絡設備。我對Ansible有一些經驗,我當然可以使用類似的東西。但這對我們的配置系統的工作方式有很大的改變,而Apache解決方案則不然。我可能會接受你的答案,但我想我不會收到一個完美的簡單答案。乾杯 – kine 2015-02-25 15:14:05
哦,有可能是你可以做的事......將每個部分拆分成不同的文件,並使用include重用它。請參閱http://httpd.apache.org/docs/current/en/mod/core.html#include – ROunofF 2015-02-26 18:16:39