Можно ли использовать переменные в httpd.conf

Есть ли способ использовать какие-то переменные в файле apache httpd.conf? Я хотел бы определить значение и использовать его во всем блоке, как в

define myvar somename #or whatever the syntax would be
alias /my/path "/some/path/${myvar} #or whatever the syntax would be

person Paul Spencer    schedule 13.01.2011    source источник
comment
См. этот вопрос: stackoverflow.com/questions/6569080/   -  person Ray    schedule 13.12.2013


Ответы (2)


Да вроде. Вы можете заменить переменные среды в файле конфигурации при запуске с помощью синтаксиса ${ENVVAR}. Вам решать, как установить эти переменные перед запуском сервера.

http://httpd.apache.org/docs/2.2/configuring.html#syntax

Обратите внимание, что эти переменные будут сохраняться, поэтому любые скрипты на таких языках, как php, смогут их прочитать.

Также важно отметить, что эти значения интерпретируются только один раз при запуске сервера, поэтому они больше похожи на константы, чем на переменные.

Обновлять

Начиная с httpd версии 2.4, вместо этого см. этот ответ: https://stackoverflow.com/a/15731921/498798

person noodl    schedule 13.01.2011
comment
в установке, подобной debian, они определены в /etc/apache2/envvars - person regilero; 13.01.2011
comment
Верно, поэтому я и говорю, что решать вам. Пакет Debian Apache представляет собой позорный беспорядок. - person noodl; 13.01.2011
comment
Благодарность! Я не думаю, что смогу делать именно то, что хочу, но это на самом деле поможет многое упростить. - person Paul Spencer; 14.01.2011
comment
Как указано в комментарии выше, на этот вопрос есть лучший ответ stackoverflow.com/questions/6569080 - person ajon; 26.03.2015

Попробуйте мод_макро. Это фактически позволяет вам использовать то, что по существу является переменными. Пример из страницы документации модуля дает представление о нем:

## Define a VHost Macro for repetitive configurations

<Macro VHost $host $port $dir>
  Listen $port
  <VirtualHost *:$port>

    ServerName $host
    DocumentRoot $dir

    <Directory $dir>
      # do something here...
    </Directory>

    # limit access to intranet subdir.
    <Directory $dir/intranet>
      Require ip 10.0.0.0/8
    </Directory>
  </VirtualHost>
</Macro>

## Use of VHost with different arguments.

Use VHost www.apache.org 80 /vhosts/apache/htdocs
Use VHost example.org 8080 /vhosts/example/htdocs
Use VHost www.example.fr 1234 /vhosts/example.fr/htdocs

Я нашел его для загрузки по адресу http://www.cri.ensmp.fr/~coelho/mod_macro/

person Scott Willeke    schedule 14.05.2013
comment
mod_macro удобно найти в Debian/Ubuntu, если вы используете Debian/Ubuntu, искажающий Apache. Мы активно используем mod_macro, и это очень приятно. Пакет: libapache2-mod-macro - person David Gerard; 19.05.2014
comment
В качестве альтернативы вы можете иметь аналогичную функциональность с определением, хотя и менее элегантно. Пример: define hostname mysite.com IncludeOptional vhost_template.conf undefine hostname - person Rolf; 23.03.2017