如何在负载均衡的Apache + PHP服务器上设置服务器名称?

问题描述 投票:0回答:1

我使用this tutorial设置了负载平衡的Apache服务器,并且从Apache的角度来看一切正常。我有一个带有mod_proxy的负载均衡器,以及两个在实际中为请求服务的webheads。

但是我试图在它们上运行我的PHP应用程序,并且设置cookie存在问题。在调查过程中,我发现服务器名称设置为服务器的IP地址(而不是我在httpd.conf中设置的真实服务器名称)。这是我用于设置Cookie的命令;

setcookie("mycookie", $value, time() + 86400, "/", $_SERVER['SERVER_NAME'], false, true);

我在这里使用$ _SERVER ['SERVER_NAME']的原因是,我的每个客户端应用程序都有一个单独的地址(例如client1.xyz.com,client2.xyz.com等),因此服务器名称不一致适用于所有用户。

如果$ _SERVER ['SERVER_NAME']如果我回显该值,它将显示服务器的IP地址,而不是服务器名称。因此,当我在服务器之间切换时,cookie丢失了。

如何在群集的网络头上设置服务器名称?

php apache http-proxy mod-proxy httpcookie
1个回答
0
投票

我自己找到了答案。可以通过在负载均衡器中设置ProxyPreserveHost(在Proxy指令内部)来完成。这样,客户端标头将由负载均衡器传递给工作程序。

ProxyPreserveHost On
© www.soinside.com 2019 - 2024. All rights reserved.