【发布时间】:2020-05-21 14:58:01
【问题描述】:
我想创建一个自定义 403 错误页面。 目前我已经创建了一个入口,并且在注释中我有这样的内容:
"nginx.ingress.kubernetes.io/whitelist-source-range": "100.01.128.0/20,88.100.01.01"
因此,任何在该 IP 范围之外访问我的网络应用程序的尝试都会收到 403 错误。
为了创建自定义页面,我尝试添加以下注释:
"nginx.ingress.kubernetes.io/custom-http-errors": "403",
"nginx.ingress.kubernetes.io/default-backend": "default-http-backend"
其中 default-http-backend 是已部署应用的名称。
入口有这个:
{
"kind": "Ingress",
"apiVersion": "extensions/v1beta1",
"metadata": {
"name": "my-app-ingress",
"namespace": "my-app-test",
"selfLink": "/apis/extensions/v1beta1/namespaces/my-app-test/ingresses/my-app-ingress",
"uid": "8f31f2b4-428d-11ea-b15a-ee0dcf00d5a8",
"resourceVersion": "129105581",
"generation": 3,
"creationTimestamp": "2020-01-29T11:50:34Z",
"annotations": {
"kubernetes.io/ingress.class": "nginx",
"nginx.ingress.kubernetes.io/custom-http-errors": "403",
"nginx.ingress.kubernetes.io/default-backend": "default-http-backend",
"nginx.ingress.kubernetes.io/rewrite-target": "/",
"nginx.ingress.kubernetes.io/whitelist-source-range": "100.01.128.0/20,90.108.01.012"
}
},
"spec": {
"tls": [
{
"hosts": [
"my-app-test.retail-azure.js-devops.co.uk"
],
"secretName": "ssl-secret"
}
],
"rules": [
{
"host": "my-app-test.retail-azure.js-devops.co.uk",
"http": {
"paths": [
{
"path": "/api",
"backend": {
"serviceName": "my-app-backend",
"servicePort": 80
}
},
{
"path": "/",
"backend": {
"serviceName": "my-app-frontend",
"servicePort": 80
}
}
]
}
}
]
},
"status": {
"loadBalancer": {
"ingress": [
{}
]
}
}
}
但我总是得到默认的 403。 我错过了什么?
【问题讨论】:
-
我在这里试过你的配置,一切都很好。您的服务“my-app-frontend”、“default-http-backend”和入口在同一个命名空间中?
-
它们都在同一个前端,但是当我从非白名单 IP 访问我的网络应用程序时,我没有看到“default-http-backend”...(我仍然看到真正的默认值一)。我不知道它是如何为您工作或为什么...可能是因为我将“default-http-backend”用作服务名称...这可能是一个冲突
-
你能描述一下服务 default-http-backend 吗?您还可以提供您想要作为默认后端的 pod 的 ips 吗?
标签: kubernetes kubernetes-ingress