Kubernetes 当我有多个POD时,Nginx ingress返回自定义http错误

Kubernetes 当我有多个POD时,Nginx ingress返回自定义http错误,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,我有一个工作负载、一个服务和一个Nginx入口控制器,将流量路由到该服务。只要我只有一个豆荚,一切都很好。现在,当我通过将副本设置为2来放大时,API返回的http错误将转换为HTML页面,隐藏随错误返回的重要信息 当我的API返回时: res.status(502).send('The error is THIS!'); 我在答复中看到的是: <html> <head> <title>502 Bad Gateway</title> &

我有一个工作负载、一个服务和一个Nginx入口控制器,将流量路由到该服务。只要我只有一个豆荚,一切都很好。现在,当我通过将副本设置为2来放大时,API返回的http错误将转换为HTML页面,隐藏随错误返回的重要信息

当我的API返回时:

res.status(502).send('The error is THIS!');
我在答复中看到的是:

<html>

<head>
    <title>502 Bad Gateway</title>
</head>

<body bgcolor="white">
    <center>
        <h1>502 Bad Gateway</h1>
    </center>
    <hr>
    <center>nginx/1.11.3</center>
</body>

</html>

502坏网关
502坏网关

nginx/1.11.3
如何绕过此自定义错误创建并接收我的原始错误消息?

这是。如果存在多个后端(服务端点),当nginx从后端服务接收到502、503或504响应状态时,它将尝试下一个后端。当没有更多后端可供尝试时,会产生自定义错误

设置注释nginx.ingres.kubernetes.io/service-upstream:“true”将改变nginx的行为,使其指向一个后端,即k8s集群服务集群。通常,nginx将作为后端服务器管理所有服务端点


请注意,使用此注释会将负载平衡决策移到Kubernetes群集服务路由域,而不是nginx的逻辑。

谢谢您的回答。你能指出集群服务路由和nginx逻辑之间的区别吗?这是一个大话题。Kubernetes使用简单的第3层tcp重定向。客户端需要接收任何tcp故障。删除服务需要活动性探测。Nginx保护您不受这些问题的影响,您的问题就是一个很好的例子,如果端点已启动但没有响应,Nginx将在客户端未看到错误的情况下处理此问题。谢谢,我明白了。当然这是个大话题。如果可以的话,请留下一两个关于这个概念的链接。