我有一组负载均衡器后面的linux apache 1.3服务器,我希望能够一眼就能确定我正在访问的服务器。 负载平衡器的监视能力受到严重限制,所以我想要做的就是configurationapache发送一个额外的头部来指明机器的主机名。
我知道我可以使用主机名将头部硬编码到httpd.conf中:
Header set X-Which-Host-Am-I 'host1'
但是,所有服务器都使用rsync进行镜像,包括configuration,因此硬编码的主机名已经不存在了。 有没有办法我可以调用hostname命令并将其转储到标题中?
说明:由于这些服务器上存在多个虚拟主机,因此我需要物理机的主机名,而不是请求中的域名。
未经testing,但如何通过init(或其他启动)脚本传递行? 就像是:
/path/to/httpd -c "Header set X-Hostname $HOSTNAME"
如果你使用的是RH风格的发行版,你可以把它压入/etc/sysconfig/httpd或类似的文件中,以避免编辑init脚本。
您需要使用mod_env传递一个环境variables:
PassEnv HOSTNAME Header set X-Hostname "%{HOSTNAME}e"
您可以通过envvars文件(我的是/ etc / apache2 / envvars)来设置HOSTNAME的值
另外,如果你使用PHP,你可以使用环境variables