GKE 上的 NGINX Ingress 无法加载静态文件

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

我已在 GKE 集群上设置了 NGINX Ingress Controller。我可以获得 IP 地址并成功将其映射到我的域。但是,我无法加载静态文件,这些文件是我的父图像的一部分:

europe-west1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest

这些静态文件无法加载:

https://example.com/cde-760a98e0f62f1b63edd3544c6547f81ba446e8c8/static/out/vs/code/browser/workbench/workbench.css
https://example.com/cde-760a98e0f62f1b63edd3544c6547f81ba446e8c8/static/out/vs/code/browser/workbench/workbench.js
https://example.com/cde-760a98e0f62f1b63edd3544c6547f81ba446e8c8/static/out/nls.messages.js

但是,通过我的 NodePort 服务 URL 访问时,相同的文件可以正确加载:

http://node-ip:30953/cde-760a98e0f62f1b63edd3544c6547f81ba446e8c8/static/out/vs/code/browser/workbench/workbench.css
http://node-ip:30953/cde-760a98e0f62f1b63edd3544c6547f81ba446e8c8/static/out/vs/code/browser/workbench/workbench.js
http://node-ip:30953/cde-760a98e0f62f1b63edd3544c6547f81ba446e8c8/static/out/nls.messages.js

这是我当前的 Ingress 配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ms-ingress  # Reference the first ingress item
  namespace: code-oss
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/add-headers: 'Cache-Control: max-age=31536000; public'
    nginx.ingress.kubernetes.io/enable-access-log: "true"
    nginx.ingress.kubernetes.io/enable-debug: "true"
    nginx.ingress.kubernetes.io/proxy-buffering: "on"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
    ingressClassName: nginx
    tls:
    - hosts:
        - example.com
        - www.example.com
      secretName: ms-app-tls
    rules:
    - host: example.com
      http:
        paths:
        - path: /vfb-pod-one(/|$)(.*)
          pathType: ImplementationSpecific
          backend:
            service:
              name: vfb-pod-one
              port:
                number: 8000

browsers's network tab

这是 pod 容器内的文件路径:

要访问容器,我使用以下命令:

kubectl exec -it vfb-pod-one-754c874778-qxqkv -n code-oss -- /bin/bash

pod 默认路径为

/home/user/vfb-contrib
,我的静态文件位于该路径之外。请参阅下图了解文件位置。

file-location

我在这里缺少什么?我认为我的 Ingress 配置中忽略了一些东西,但我不确定它是什么。

url-rewriting google-kubernetes-engine load-balancing kubernetes-ingress nginx-ingress
1个回答
0
投票

这很奇怪。添加默认路径后它就起作用了。

  default:
    path: /(.*)
    pathType: ImplementationSpecific
    backend:
      serviceName:  vfb-pod-one
      servicePortNumber: 8000
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.