簡體   English   中英

如何在負載均衡的 Apache+PHP 服務器上設置服務器名稱?

[英]How to set the server name on a load balanced Apache+PHP server?

我使用本教程設置了負載平衡的 Apache 服務器,並且從 Apache 方面一切正常。 我有一個帶有 mod_proxy 的負載均衡器,以及兩個在實踐中為請求提供服務的 webhead。

但是我嘗試在它們上運行我的 PHP 應用程序,並且設置 cookies 存在問題。 在調查的時候,我發現服務器名稱設置為服務器的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 會丟失。

如何在集群的 webheads 上設置服務器名稱?

我自己找到了答案。 可以通過在負載均衡器中設置 ProxyPreserveHost(在 Proxy 指令中)來完成。 這樣,客戶端 header 將由負載均衡器傳遞給工作人員。

ProxyPreserveHost On

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM