为了调试集群上的问题,我试图确定集群上的哪台机器导致了问题。我的想法是我可以插入标识服务器的标头令牌。
我的第一个想法是在我的httpd.conf中添加指令HeaderaddX-Server-Ip"%{SERVER\_ADDR}e。但是,由于我们的负载均衡器的性质,Apache以某种方式将其解析为集群所有机器上的负载均衡器IP地址——这真的、真的没有用。
不过,我终于偶然发现了一个好的解决方案:您可以在apachectl中设置环境变量,然后使用中的;完成后,您可以在任何地方使用环境变量。PassEnv指令将它们传递到Apache环境中mod_env
在我的apachectl中,我添加了行exportHOSTNAME=\hostname“。然后,在我的httpd.conf中,我首先添加了行PassEnvHOSTNAME,然后是指令HeaderaddX-Server-Name"%{HOSTNAME}e"。瞧!我现在在标头中有了主机名,它为我提供了调试所需的信息。
