php - 如何在负载均衡的 Apache+PHP 服务器上设置服务器名称?
问题描述
我使用本教程设置了一个负载平衡的 Apache 服务器,从 Apache 的角度来看,一切正常。我有一个带有 mod_proxy 的负载均衡器,以及两个在实践中为请求提供服务的 webhead。
但我试图在它们上运行我的 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 会丢失。
如何在集群的 webheads 上设置服务器名称?
解决方案
我自己找到了答案。可以通过在负载均衡器中设置 ProxyPreserveHost(在 Proxy 指令中)来完成。这样,客户端标头将由负载均衡器传递给工作人员。
ProxyPreserveHost On
推荐阅读
- pagination - 在颤动中使用 ListView 进行分页
- variables - 启动进程时如何为Activiti设置瞬态变量
- html - 如何防止元素与其后元素之间的换行符?
- javascript - MobX 本地状态与全局状态
- java - Android/Java:为什么我的 ConstraintLayout 泄漏?
- azure-devops - Azure DevOps 发布管道的动态变量组
- html - XSLT - HTML 转换中的多个模板
- django - 从 axios 获取 DRF 分页端点
- python - 是否可以使用 groovy 脚本从文本文件中读取 python 函数输出?
- powershell - 如何创建日志文件(时间、运行脚本的用户以及脚本完成后发生的情况)