假设我有 3 台具有不同 IP 的物理服务器和 1 个负载均衡器,用于管理这 3 台服务器之间的流量。我们测试停止 2 台服务器中的 nginx 服务,负载均衡器检测到了这一点,并且不使用停止 nginx 的 2 台服务器。
我的问题是:例如,3 台服务器正常运行,而 1 台服务器出现内部服务器错误(任何 500 内部服务器错误)。我们如何避免遇到服务器错误的 1 台服务器?以避免出现白页?
答案1
您可以通过定义格式正确的错误文档来避免出现空白页error_page
指令,而不是依赖默认错误消息:)
error_page 500 /errors/500.html
另一方面,如果您想避免向返回错误的节点发送进一步的请求?
通常,这是您在负载均衡器中配置的内容,您希望从活动后端服务器池中删除故障节点。不同产品的细节有所不同,但您需要定义一个健康检查,该检查不仅仅是 TCP 连接,还可以确定后端服务器是否正常运行。
负载均衡器需要做一些更高级的事情,比如实际的 HTTP 请求,并评估速度和返回内容,通常是 HTTP 状态/响应代码为 200 和/或响应主体具有特定内容或满足特定的最小大小。