什么是 default backend
default backend 是 ingress-nginx 中的一个服务,主要用于处理 nginx controller 无法识别的而请求的服务
主要提供了两个接口
- /healthz that returns 200
- /that returns 404
如何改default backend 状态码
需求:修改 default backend 状态码 404 为 403
原理:nginx-controller 启动时指定了一个 default backend 容器,如下所示
bash
|
|
通常情况下在通过定义配置文件方式改变是不容易做的,ingress-nginx 提供了一种自定义方式 “custom-error-pages“ 可以完成 ,完成后该 defaultBackend 支持使用 X-code方式自定义任意的错误页即错误码。
变更影响范围:
- 如果使用 helm 通过 upgrade 方式要确保配置只有default-backend
- 可以直接修改deployment
- ingress-nginx 在更新时会等待所有连接处理完成才会终止结束,可能 termnating 30分钟甚至以上
上面方式均可以更新 default-backend 方式 都不会对nginx controller 服务挂的域名的业务
default backend 状态码重置
本实例只针对 helm 安装的 ingress-nginx 进行改变
nginx 官方有提供 Customized default backend 方式,通过更改镜像,和注入 configmap 可以把对应的错误页面更改掉
yaml
|
|
yaml
|
|
如果想把 404 改成 403 需要自己修改 custom-default-backend 的源码
Reference
- [1] Default backend
- [2] Custom Errors