Kubernetes - Nginx 入口控制器 - GCS - 如果 URL 中没有路径,则重定向到“index.html”

bap*_*ppr 5 kubernetes nginx-ingress

我在 Kubernetes 集群上创建了这个入口和服务

apiVersion: v1
metadata:
  name: google-storage-buckets
spec:
  type: ExternalName
  externalName: storage.googleapis.com
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: proxy-assets-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /kinto-static-websites/gatsby/public/$1
    nginx.ingress.kubernetes.io/upstream-vhost: "storage.googleapis.com"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  rules:
  - host: gatsby.vegeta.kintohub.net
    http:
      paths:
      - path: /(.*)$
        backend:
          serviceName: google-storage-buckets
          servicePort: 443
Run Code Online (Sandbox Code Playgroud)

但是,只有当我index.html在 gatsby.vegeta.kintohub.net 之后添加时,这才有效。

如果我继续访问 gatsby.vegeta.kintohub.net/page-2,也是如此。

请问我怎样才能完成这项工作?

谢谢

Ric*_*ico 2

这里更多的是关于你的nginx.conf以及它认为它是要尝试的默认文件。

\n

默认的入口配置没有诸如always try之类的东西index.html,因此您需要向IngressKubernetes资源添加一些额外的配置。对于 nginx 入口控制器,您可以使用configuration-snippet注释来在指令下添加配置location。像这样的事情应该做:

\n
nginx.ingress.kubernetes.io/configuration-snippet: |\n      try_files $uri $uri/ $uri/index.html /index.html; \n\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x9c\x8c\xef\xb8\x8f

\n