我有一个Kubernetes Ingress资源,我正在尝试将所有非www流量重定向到www子域以进行url规范化。因此example.com
上的所有流量都应该重写为www.example.com
。我似乎无法弄清楚如何正确使用Ingress rewrite example来实现这一目标。
My Ingress(JSON格式):
{
"apiVersion": "extensions/v1beta1",
"kind": "Ingress",
"metadata": {
"name": "example-staging",
"annotations": {
"ingress.kubernetes.io/rewrite-target": "/",
"kubernetes.io/ingress.global-static-ip-name": "example-static-ip"
}
},
"spec": {
"rules": [
{
"host": "www.example.nl",
"http": {
"paths": [
{
"path": "/",
"backend": {
"serviceName": "example-service",
"servicePort": 80
}
}
]
}
}
]
}
}
答案 0 :(得分:2)
ingress.kubernetes.io/rewrite-target
用于重写请求URI,而不是主机。
从你的链接看起来你正在使用nginx入口控制器。您可以为使用Ingress
注释添加301的example.nl
添加第二个ingress.kubernetes.io/configuration-snippet
来获得所需效果。
{
"apiVersion": "extensions/v1beta1",
"kind": "Ingress",
"metadata": {
"name": "example-staging-wwwredir",
"annotations": {
"ingress.kubernetes.io/rewrite-target": "/",
"ingress.kubernetes.io/configuration-snippet": "return 301 $scheme://www.example.nl$request_uri;"
}
},
"spec": {
"rules": [
{
"host": "example.nl",
"http": {
"paths": [
{
"path": "/",
"backend": {
"serviceName": "example-service",
"servicePort": 80
}
}
]
}
}
]
}
}