Я пытаюсь установить собственный HTTP-заголовок с переменной среды ** с сервером Apache 2.4.6 и headers_module.
Я работаю внутри HTTP VHost на порту 80.
Все работает, как ожидалось, с базовым примером, например:
Header set MyHeader "%D %t"
Я прочитал документацию Apache по mod_headers: https://httpd.apache.org/docs/2.4/en/mod/mod_headers.html#header
Говорят, что можно получить доступ к переменной среды, используя %{ENVVARNAME}e
(с ENVVARNAME имя переменной ENV)
Я также прочитал другой пост, но не получил реального рабочего ответа: Apache устанавливает настраиваемый заголовок с переменной окружения
Но моя проблема в том, чтобы добавить заголовок, а не идентифицировать мой сервер Apache, например значение среды HOSTNAME.
Header Set X-Serv %{HOSTNAME}e
Безуспешно: всегда отображать X-Serv: {null} вместо значения
SetEnv myvar ${HOSTNAME}
Header set X-Serv %{myvar}e
Безуспешно: в моих заголовках HTTP отображается: X-Serv:% {myvar} e
Я также пробовал другие различные комбинации:
Обратите внимание: переменная окружения My HOSTNAME существует и отображается в команде env с пользователем apache, владеющим процессом httpd.
Любая идея?
1. Убедитесь, что модуль активирован (mod_headers) или активируйте при необходимости
a2enmod headers
2. в / etc / apache2 / envvars добавить
export HOSTNAME1='uname -n'
или 'hostname'
3. в <VirtualHost _default:443>
пункт
PassEnv HOSTNAME1
Header set X-Server "%{HOSTNAME1}e"
4. перезапустите или перезагрузите службу httpd
service apache2 restart
Вы должны объявить, какие системные переменные среды вы хотите использовать с PassEnv
директива
Рабочий пример:
PassEnv HOSTNAME
Header Set X-Serv %{HOSTNAME}e
Нашел способ заставить его работать:
Убедитесь, что модуль активирован (mod_headers) или активируйте при необходимости
a2enmod headers
в / etc / apache2 / envvars добавить
export HOSTNAME=`uname -n`
в <VirtualHost>
пункт
Header set apachehost ${HOSTNAME}
Перезапустите или перезагрузите службу httpd
service apache2 restart