使用 ingress-nginx 重定向所有内容

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

我创建了一个 YAML 文件,它唯一的工作是:

It should immediately redirect to google.com

但它根本不起作用...

我的

localhost
仍然回来
404-nginx

我在 docker-desktop 上,我的集群版本是

v1.21.5

这是我的

redirect.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-google
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: https://www.google.com
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: doesntmatter
            port:
              number: 80

这是我的

kubectl get ingress

NAME          CLASS    HOSTS                          ADDRESS     PORTS   AGE
cheddar       nginx    cheddar.127.0.0.1.nip.io       localhost   80      31m
my-google     <none>   *                                          80      26m
stilton       nginx    stilton.127.0.0.1.nip.io       localhost   80      31m
wensleydale   nginx    wensleydale.127.0.0.1.nip.io   localhost   80      31m

注意:其他入口服务,例如

cheddar.127.0.0.1.nip.io
工作正常...

kubernetes kubernetes-ingress kubectl nginx-ingress
2个回答
2
投票

我猜你忘记了入口类名。

spec:
  ingressClassName: nginx
  ...

除此之外,您还可以创建一个外部服务

---
apiVersion: v1
kind: Service
metadata:
  name: google
spec:
  type: ExternalName
  externalName: www.google.com
  ports:
    - name: https
      port: 443
      protocol: TCP
      targetPort: 443
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: google
  labels:
    name: google
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/upstream-vhost: www.google.com
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: google
            port:
              name: https

请注意,您的入口控制器的证书不是谷歌的证书。所以这可能存在一些问题。可能有助于解决此类问题的一种设置是注释

nginx.ingress.kubernetes.io/upstream-vhost
,如上所示。


0
投票

如果您仍然想使用 Ingress 而不是外部服务,请尝试以下操作:

nginx.ingress.kubernetes.io/permanent-redirect: "https://nginx-redirect-domain.ch/$1"
host.path.tonginx.ingress.kubernetes.io/use-regex: "true"

与路径结合:

path: "/(.*)"

此处的文档:https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md#permanent-redirect

© www.soinside.com 2019 - 2024. All rights reserved.