Я работаю над продуктом, который запускает Apache, и я пытаюсь сделать конфигурацию более СУХОЙ - сейчас существует множество различных конфигураций vhost, которые загружаются в разных ситуациях, но идентичны на 90%, и это очень утомительно, когда нужно делать изменения. Я не думаю, что Apache действительно спроектирован с учетом такой динамической среды, но w/e, здесь я все равно.Динамическое отключение/отсутствие директив конфигурации Apache (DRY)
Итак, я сначала обратился к переменным окружения - у меня есть небольшой скрипт для загрузки, который определяет необходимые параметры конфигурации и дампов в /etc/apache2/envvars
(который загружается apache2ctl
и аналогичен на Ubuntu). Это позволяет мне делать что-то вроде этого:
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 (на основе переменных среды или аналогичного механизма) без необходимости поддерживать отдельные файлы для каждого возможного сценария?
Альтернативный вопрос: Есть ли способ предоставить пустое значение/сертификат этой директиве (SSLCACertificateFile
) таким образом, чтобы Apache не считал недействительным?
Ubuntu 12.04.5
Apache 2.2.22
Это не серверы, предназначенные для развертывания, а скорее сетевые устройства, находящиеся в распоряжении клиентов, которые перенастраиваются локально и динамически на основе их (ограниченного) ввода. У меня есть некоторый опыт работы с Ansible, я определенно мог бы использовать что-то подобное. Но это большое изменение в работе нашей системы конфигурации, в то время как решение Apache не было бы. Я, вероятно, приму ваш ответ, хотя, я думаю, я не получу идеальный легкий ответ. Cheers – kine
О, возможно, что-то можно сделать ... Разделите каждый раздел в другом файле и повторно используйте его с помощью include. См. Http://httpd.apache.org/docs/current/en/mod/core.html#include – ROunofF