我们有一个后端服务,目前在 HAProxy 代理服务器前面提供服务,以实现负载平衡。
当我们关闭后端服务进行维护时,连接到 HAProxy 的客户端会收到504-Gateway Timeout
错误,这是预料之中的。
然而,当后端服务启动时,客户端仍然会收到 504 状态代码,直到第二天。
客户端通过连接池进行连接,使用Spring RestTemplate
和Apache HTTPClient
。
客户端重新启动后,问题消失。HAProxy 中是否有任何配置可以缓存连接?我们可以进行哪些配置来防止出现此问题?
请注意,如果尝试手动使用curl
命令,请求可以毫无问题地到达后端。
谢谢。
答案1
如果盲目设置与缓存相关的标头Expires:
,无论 HAProxy 是向客户端返回内容还是错误,都可能会发生这种情况。如果客户端的缓存/站点数据被清除,会发生什么情况?
查看返回到浏览器的标头,例如使用 Firefox 或 Chrome 上的开发者模式。如果 HAProxy 返回错误的缓存信息,则不应添加、删除或缩短该信息。如果需要,请将标头添加到您的问题中。