我有一些NodeJS后端在Kubernetes设置中作为pod运行,Ingress管理的nginx在它上面。
这些后端是API服务器,在正常操作期间可以返回400,404或500个响应。这些回复将为客户提供有意义的数据;除了状态代码之外,响应在正文中具有JSON序列化结构,通知错误原因或建议解决方案。
但是,Ingress会拦截这些错误响应,并返回错误页面。因此,客户端不会收到服务试图提供的信息。
kubernetes-contrib存储库中有一个已关闭的票证,表明现在可以关闭错误拦截:https://github.com/kubernetes/contrib/issues/897。作为kubernetes / ingress的新手,我无法弄清楚如何在我的情况下应用这种配置。
作为参考,这是kubectl get ingress <ingress-name>
的输出:(编辑名称和IP)
Name: ingress-name-redacted
Namespace: default
Address: 127.0.0.1
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
public.service.example.com
/ service-name:80 (<none>)
Annotations:
rewrite-target: /
service-upstream: true
use-port-in-redirects: true
Events: <none>
答案 0 :(得分:4)
我在Tectonic 1.7.9-tectonic上解决了这个问题.4。
在Tectonic Web界面中,转到Workloads - &gt;配置映射并按命名空间构造系统过滤。
在显示的配置图中,您应该看到一个名为“tectonic-custom-error”的文件。
打开它并转到YAML编辑器。
在数据字段中,您应该有这样的条目:
custom-http-errors:'404,500,502,503'
用于配置将捕获哪些HTTP响应,并使用自定义Tectonic错误页面显示。
如果你不想要其中的一些,只需删除它们,或者全部清除它们。
一旦保存更新的配置图,它就会生效。
当然,你可以从kubectl edit的命令行中找到相同的内容:
$&GT; kubectl edit cm tectonic-custom-error --namespace = tectonic-system
希望这会有所帮助:)