我嘗試使用 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」命令中,其中 apache 使用者擁有 httpd 進程
任何想法?
答案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