Hostname

在 Apache 中將機器主機名作為標頭髮送

  • January 3, 2019

我在負載均衡器後面有一組 linux apache 1.3 伺服器,我希望能夠一眼就確定我正在訪問哪台伺服器。負載均衡器的監控能力受到嚴重限制,所以我想做的是配置 apache 以發送一個額外的標頭,指示機器的主機名。

我知道我可以使用主機名將標頭硬編碼到 httpd.conf 中:

Header set X-Which-Host-Am-I 'host1'

但是,所有有問題的伺服器都使用 rsync 進行鏡像,包括配置,因此硬編碼主機名已經過時了。有沒有辦法可以呼叫hostname命令並將其轉儲到標題中?

**澄清:**由於這些伺服器上存在多個虛擬主機,我想要物理機的主機名,而不是請求中的域名。

未經測試,但是如何通過 init(或其他啟動)腳本傳遞該行?就像是:

/path/to/httpd -c "Header set X-Hostname $HOSTNAME"

如果您使用的是 RH 風格的發行版,您可能可以將其壓縮到/etc/sysconfig/httpd或類似中以避免編輯 init 腳本。

您需要使用 mod_env 傳遞環境變數:

PassEnv HOSTNAME
Header set X-Hostname "%{HOSTNAME}e"

您可以通過envvars文件設置HOSTNAME的值(我的是/etc/apache2/envvars)

此外,如果您使用的是 PHP,則可以使用環境變數

引用自:https://serverfault.com/questions/61581