如何设置Ingress-nginx自定义错误

时间:2019-08-08 11:38:26

标签: kubernetes google-kubernetes-engine nginx-ingress

我将使用kubernetes nginx入口控制器并在GKE上设置自定义错误,但是我有一些问题。

目标: 如果在something-web-app中发生50x错误,我将返回http状态代码200和JSON'{“ status”:200,“ message”:“ ok”}'

问题: 1.我已阅读文档(https://kubernetes.github.io/ingress-nginx/examples/customization/custom-errors/),但是没有如何自定义默认后端的示例。

  1. 我不了解ConfigMap和Annotation之间的区别。

  2. ingress-nginx控制器首先如何工作。

1 个答案:

答案 0 :(得分:1)

您可以使用两种方法进行操作:

  1. 在入口中添加注释
  2. 更改入口控制器configmap(更像beckend)

1 。尝试将此注释添加到kubernetes入口:

  

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。。配置图编辑

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

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/