首页 > 解决方案 > 如何设置 ingress-nginx 自定义错误

问题描述

我在 GKE 上使用 kubernetes ingress-nginx 控制器和一组自定义错误,但我遇到了一些问题。

目标:如果出现 50x 错误something-web-app,我会返回 HTTP 状态码 200 和 JSON{"status":200, "message":"ok"}

问题:

  1. 我已阅读自定义错误文档,但没有关于如何自定义default-backend.

  2. 我不明白 ConfigMap 和 Annotation 之间的区别。

  3. ingress-nginx 控制器首先是如何工作的。

标签: kubernetesgoogle-kubernetes-enginenginx-ingress

解决方案


你可以用两种方式做到这一点:

  1. 在入口中添加注释
  2. 入口控制器配置图的变化(更像是 beckend)

1 . 尝试将此注释添加到 kubernetes ingress :

nginx.ingress.kubernetes.io/default-backend: nginx-errors-svc

nginx.ingress.kubernetes.io/custom-http-errors:404,503

nginx.ingress.kubernetes.io/default-backend:错误页面

如果这不起作用,请将其与两个一起添加:

nginx.ingress.kubernetes.io/server-snippet: |
      location @custom_503 {
        return 404;
      }
      error_page 503 @custom_503;

2. Configmap编辑

您可以将此配置映射应用于入口控制器

apiVersion: v1
kind: ConfigMap
name: nginx-configuration-ext
data:
  custom-http-errors: 502,503,504
  proxy-next-upstream-tries: "2"
  server-tokens: "false"

你也可以参考这个博客:https ://habr.com/ru/company/flant/blog/445596/


推荐阅读