Я пытаюсь установить пользовательский заголовок 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
Я также попробовал несколько других различных комбинаций:
Обратите внимание: моя переменная среды HOSTNAME существует и отображается в команде «env» с пользователем Apache, владеющим процессом httpd.
Есть идеи?
решение1
Вам необходимо указать, какие системные переменные среды вы хотите использовать сPassEnv
директива
Рабочий пример:
PassEnv HOSTNAME
Header Set X-Serv %{HOSTNAME}e
решение2
Нашел способ заставить это работать:
Убедитесь, что модуль активирован (mod_headers) или активируйте его при необходимости.
a2enmod headers
в /etc/apache2/envvars добавить
export HOSTNAME=`uname -n`
в
<VirtualHost>
пунктеHeader set apachehost ${HOSTNAME}
Перезапустить или перезагрузить службу httpd
service apache2 restart
решение3
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