我们在Kubernetes集群上托管了基于Angular的Web应用程序 . 此应用程序的Ingress配置为添加基本URL:
{
"kind": "Ingress",
"apiVersion": "extensions/v1beta1",
"metadata": {
"name": "test-app",
"namespace": "acceptance-testing",
...
"annotations": {
"kubernetes.io/ingress.class": "nginx",
"nginx.ingress.kubernetes.io/add-base-url": "true",
"nginx.ingress.kubernetes.io/rewrite-target": "/",
"nginx.ingress.kubernetes.io/ssl-redirect": "true"
}
},
"spec": {
"rules": [
{
"http": {
"paths": [
{
"path": "/at/test-app",
"backend": {
"serviceName": "test-app",
"servicePort": 80
}
}
]
}
}
]
},
...
}
当我们在浏览器中输入包含客户端路由部分的URL时,ingress会将整个URL添加为在我们的场景中不正确的基础 .
例如https://server/at/test-app/some-page请求基本URL应为https://server/at/test-app/但我们收到https://server/at/test-app/some-page/
我们已经切换到Angular哈希路由位置策略,现在它正常工作,但我们想知道是否有某种方法可以使位置路由策略与nginx入口一起工作?
预先感谢您的帮助 .
最好的祝福
1 回答
对不起我的英文,
我有办法解决这个问题,但也许不是最好的方法
这是一些概念:
/at/test-app/some-page/
必须路由到/at/test-app
,这将有一个Angular App,然后Angular会处理/some-page/
非角度路径(例如:.js,.css等等)不会重写它
我不知道为什么
"nginx.ingress.kubernetes.io/rewrite-target": "/at/test-app"
在我的环境中看起来不起作用(gke 1.11.6-gke.2,ingress:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.22.0)