gpt4 book ai didi

angular - 如何正确配置 k8s nginx 入口基本 url 替换来处理 Angular 客户端路由(LocationStrategy)?

转载 作者:太空狗 更新时间:2023-10-29 17:21:00 25 4
gpt4 key购买 nike

我们在 Kubernetes 集群上托管了基于 Angular 的 Web 应用程序。此应用程序的入口配置为添加基本 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 ingress 一起工作?

预先感谢您的帮助。

最好的问候

最佳答案

这里是一些概念:

  1. /at/test-app/some-page/ 必须路由到 /at/test-app,这会有一个 Angular App,然后 Angular 会处理 /some-page/
  2. 非 Angular 路径(例如:.js、.css 等)不要重写
  3. 我不知道为什么 "nginx.ingress.kubernetes.io/rewrite-target": "/at/test-app" 在我的环境中看起来不工作(gke 1.11. 6-gke.2,入口:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.22.0)
{
...
"annotations": {
"kubernetes.io/ingress.class": "nginx",
"nginx.ingress.kubernetes.io/add-base-url": "true",
"nginx.ingress.kubernetes.io/configuration-snippet": | <-- change to this
rewrite /at/test-app/([^.]+)$ /at/test-app break; <-- rewrite path if no .
"nginx.ingress.kubernetes.io/ssl-redirect": "true"
}
....
}

关于angular - 如何正确配置 k8s nginx 入口基本 url 替换来处理 Angular 客户端路由(LocationStrategy)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49672002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com