![内部错误服务器使用负载均衡器或 nginx 指向工作服务器](https://linux22.com/image/673814/%E5%86%85%E9%83%A8%E9%94%99%E8%AF%AF%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%BF%E7%94%A8%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%99%A8%E6%88%96%20nginx%20%E6%8C%87%E5%90%91%E5%B7%A5%E4%BD%9C%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
假设我有 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 和/或响应主体具有特定内容或满足特定的最小大小。