【问题标题】:Redirection from http to https not working for custom backend service in Kubernetes Nginx Ingress Controller从 http 到 https 的重定向不适用于 Kubernetes Nginx Ingress Controller 中的自定义后端服务
【发布时间】:2019-03-04 07:05:06
【问题描述】:

我在 Kubernetes 中设置了带有 Ingress 资源的自定义 Nginx 入口控制器,而不是“default-http-backend 服务”,我使用自定义应用程序作为默认后端服务来为默认请求提供服务。我还为我的服务使用了设置为 kubernetes 机密的自定义 SSL。问题是当我请求规则中提到的主机名时,https 重定向有效。但是当发出规则中提到的主机以外的请求时,它服务于默认应用程序,但 https 重定向不起作用。

对于包括默认请求在内的所有请求,如何将请求从 http 重定向到 https。换句话说,如何在入口资源中为通配符域设置 https 重定向。

请找到我的 yaml 文件以获取入口资源。

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-resource
  namespace: default
  annotations:
   kubernetes.io/ingress.class: "nginx"
   kubernetes.io/ingress.allow-http: "false"
   ingress.kubernetes.io/rewrite-target: /
   ingress.kubernetes.io/ssl-redirect: "true"
   ingress.kubernetes.io/proxy-connect-timeout: "14400"
   ingress.kubernetes.io/proxy-send-timeout: "14400"
   ingress.kubernetes.io/proxy-read-timeout: "14400"
spec:
  tls:
  - secretName: tls-secret

  rules:

  - host: service1.example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: service1
          servicePort: 80

  - host: service2.example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: service2
          servicePort: 80

---

【问题讨论】:

    标签: kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    我需要为没有设置规则的默认请求配置自定义服务(不是默认 http-backend 服务),并且此自定义服务应使用自定义 SSL。目前,如果 Ingress 规则中省略了域名(目的是使用“通配符”TLS 证书),则 nginx-ingress-controller 不会执行任何操作。 因此,我在我使用的入口 yaml 中添加了以下代码,并且效果很好。我在自定义默认服务底部的入口规则中添加了通配符 tls 名称。请在下面找到代码:

      rules:
    
      - host: service1.example.com
        http:
          paths:
          - path: /
            backend:
              serviceName: service1
              servicePort: 80
    
      - host: service2.example.com
        http:
          paths:
          - path: /
            backend:
              serviceName: service2
              servicePort: 80
    
      - host: '*.example.com'
        http:
          paths:
          - path: /
            backend:
              serviceName: custom-backend-service
              servicePort: 80
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-20
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      相关资源
      最近更新 更多