直到最近几天,我们的架构如下:HAProxy -> 2 个后端服务器
现在我们有:HAProxy -> Varnish -> 2 个后端服务器
之前,HAProxy 每次都会正确设置“X-FORWARDED-FOR”标头。但现在,它只会设置标头有时。
经过有时我的意思是:我向一个 PHP 脚本发出请求,打印 $_SERVER 的内容(保存讨论中的标题)。
无论我发出多少次请求,HAProxy 都不会设置标头。但是,如果我向脚本发出请求,然后快速(在请求结束之前)点击刷新(因此基本上我同时发出 2 个请求),则标头正在设置。
是否有人偶然发现过这个非常奇怪的问题并能给我指明正确的方向?
注意:将 varnish 放在 HAProxy 前面不是一个选择。
答案1
很可能是你忘记在 haproxy 配置中使用“option http-server-close”。之前没问题,因为你的后端服务器默认没有启用 keep-alive。