我尝试使用 Apache 服务器 2.4.6 和 headers_module 通过环境变量**设置自定义 HTTP 标头。
我在端口 80 上的 HTTP VHost 内工作。
一切都按预期进行,基本示例如下:
Header set MyHeader "%D %t"
我已经阅读了 mod_headers 的 Apache 文档:https://httpd.apache.org/docs/2.4/en/mod/mod_headers.html#header
据说可以使用以下方式访问环境变量
%{ENVVARNAME}e
(ENVVARNAME 为 ENV 变量的名称)
我也阅读了其他帖子,但没有真正有效的答案: Apache 使用环境变量设置自定义标头
但我的问题是添加一个标头,而不是像 HOSTNAME 环境值那样标识我的 Apache 服务器
- 我试过这个
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”命令中显示拥有 httpd 进程的 apache 用户
任何想法?
答案1
答案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.in<VirtualHost _default:443>
条款
PassEnv HOSTNAME1
Header set X-Server "%{HOSTNAME1}e"
4.重启或者重新加载httpd服务
service apache2 restart