Kubernetes Ingress 需要添加哪些注解来加载静态资源?

问题描述 投票:0回答:1

我有一个基于 Angular 的 Web 服务,名为“competitions-service”,托管在 Kubernetes 上。 该服务实现了一个由“/sports”路由的运动模块

我的目标是让主机名“sport.domain.com”指向运动模块。

为此,我有以下入口设置文件:

kind: Ingress
metadata:
  name: sports-ingress
  namespace: default
  annotations:
spec:
  ingressClassName: ingress-nginx
  rules:
  - host: sport.domain.com
    http:
      paths:
      - pathType: Prefix
        path: "/sports"
        backend:
          service:
            name: competitions-service
            port:
              number: 80

现在的问题是,当我将“sport.domain.com/sports”加载到浏览器中时,所有静态资源(runtime.js、polyfills.js、main.js、styles.css、images...)都会抛出404 NOT FOUND 错误。

从网络选项卡中,我可以看到它们是通过基本网址“sport.domain.com”(例如“sport.domain.com/main.js”)获取的,而该网址不应访问。

有什么建议可以解决这个问题吗?还是我走错路了?

angular kubernetes kubernetes-ingress nginx-ingress ingress-controller
1个回答
0
投票

您可以尝试在 Angular 应用程序中设置

baseHref
,以确保它能够识别子路径。

APP_BASE_HREF
添加到
AppModule

中的提供者数组中
@NgModule({
  declarations: [
    // ...
  ],
  imports: [
    // ...
  ],
  providers: [
    { provide: APP_BASE_HREF, useValue: '/sports' } 
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }

您可能需要更新

index.html
才能设置
base
标签

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Your App</title>
  <base href="/sports/"> <!-- Set the base URL here -->
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root></app-root>
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.