使用 Kubernetes 部署时,我的 Angular 应用程序遇到问题。当我将 SSR 或静态服务端口转发到本地主机时,该应用程序可以完美运行。但是,通过 DNS (demo.example.com) 访问应用程序会导致类型错误:无法在控制台中读取未定义的属性(读取“调用”),这在本地设置中不会发生。
这是我的 Ingress 配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: c-frontend-dev
namespace: development
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
ingressClassName: nginx
rules:
- host: "demo.example.com"
http:
paths:
# Specific path for SSR
- pathType: Prefix
path: "/pages/subscriptions"
backend:
service:
name: c-ssr-dev
port:
number: 4000
# Default path for static content
- pathType: Prefix
path: "/"
backend:
service:
name: c-static-dev
port:
number: 8080
我怀疑 Ingress 设置可能存在问题,可能与重写目标或路径路由方式有关。具有为具有 SSR 和静态托管的 Angular 应用程序配置 Ingress 经验的人能否权衡此设置中是否缺少某些内容或配置错误?
仅供参考:c-static-dev 映像创建如下所示:
FROM node:18-alpine3.19 as build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build --prod-nocdn
# Serve using a lightweight static server
FROM node:18-alpine3.19
WORKDIR /app
COPY --from=build /app/dist/c/browser .
RUN npm install -g serve
CMD ["serve", "-s", ".", "-l", "8080"]
EXPOSE 8080
任何见解或建议将不胜感激!
事实证明问题是来自 cloudflare 的缓存配置,因为我在我的案例中使用了它。