【问题标题】:Kubernetes ingress domain redirectKubernetes 入口域重定向
【发布时间】:2020-02-29 10:39:04
【问题描述】:

我想在 nginx 入口 kubernete 中重定向域。

https://test.example.io/preview/qLxiVcDGxCaQ134650121853FTg4

如果在 url preview 中来更改域重定向

https://test.app.example.io/preview/qLxiVcDGxCaQ134650121853FTg4

我在尝试什么

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: staging
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
  name: staging-ingress
spec:
  rules:
  - host: test.example.io
    http:
      paths:
      - path: /
        backend:
          serviceName: service-1
          servicePort: 80
      - path: /preview/*
        backend:
          url: 
          serviceName: service-2
          servicePort: 80
  tls:
  - hosts:
    - test.example.io
    secretName: staging

对于简单的 nginx 块就像

location ~ /preview
    {
      rewrite /preview https://test.app.example.com$uri permanent;
    }

【问题讨论】:

    标签: docker kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    我的逻辑思维,试试看:

    metadata:
          annotations:
            nginx.ingress.kubernetes.io/configuration-snippet: |
             rewrite /preview https://test.app.example.com$uri permanent;
    
    spec:
          rules:
          - host: test.example.io
            http:
              paths:
              - path: /
                backend:
                  serviceName: service-1
                  servicePort: 80
          - host: test.app.example.io
            http:
              paths:
              - path: /preview/*
                backend:
                  serviceName: service-2
                  servicePort: 80
    

    希望它有效!

    在上面的代码中:您根本不应该使用:https://test.app.example.io/preview/(它只是被重定向的链接)访问。

    【讨论】:

    • 感谢您写我使用server-snippet 而不是configuration-snippet 现在它的工作。再次感谢。
    • 如何管理子域的公网IP?
    【解决方案2】:

    使用了 nginx 入口注解

    nginx.ingress.kubernetes.io/server-snippet: |
          location ~ /preview {
             rewrite /preview https://test.app.example.com$uri permanent;
          }
    

    【讨论】:

      【解决方案3】:

      试试这个 -

      apiVersion: extensions/v1beta1
      kind: Ingress
      metadata:
        annotations:
          certmanager.k8s.io/cluster-issuer: staging
          nginx.ingress.kubernetes.io/rewrite-target: /$1
          kubernetes.io/ingress.class: nginx
        name: staging-ingress
      spec:
        rules:
        - host: test.example.io
          http:
            paths:
            - path: /(.*)
              backend:
                serviceName: service-1
                servicePort: 80
            - path: /preview/(.*)
              backend: 
                serviceName: service-2
                servicePort: 80
        tls:
        - hosts:
          - test.example.io
      secretName: staging
      

      你也可以参考this,代表同义问题

      【讨论】:

      • 我想从test.example.com重定向到test.app.example.com
      • 您可以为此添加不同的主机条目
      • 如何添加新的主机入口是什么意思?
      • 一个主机是test.example.com,另一个可以是test.app.example.com,你可以在.yaml manifests中将后端服务映射到它们
      • 但如果我要新的主机条目,它将检查该主机的路径preview 。如果包含与否。虽然我想检查域test.example.com 并重定向到test.app.example.com
      猜你喜欢
      • 2021-07-14
      • 2020-08-18
      • 2020-12-30
      • 1970-01-01
      • 2019-09-24
      • 2021-06-01
      • 2021-01-17
      • 1970-01-01
      • 2018-10-09
      相关资源
      最近更新 更多