首页 文章

从http到https的重定向不适用于Kubernetes Nginx Ingress Controller中的自定义后端服务

提问于
浏览
2

我在Kubernetes中设置了带有Ingress资源的Custom Nginx入口控制器,而不是“default-http-backend service”,我使用自定义应用程序作为默认请求的默认后端服务 . 我也使用自定义SSL设置为kubernetes secret,用于我的服务 . 问题是当我请求规则中提到的主机名时,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

---

1 回答

  • 1

    我需要为没有规则集的默认请求配置自定义服务(不是default-http-backend服务),并且此自定义服务应使用自定义SSL . 目前,如果从Ingress规则中省略了域名,则nginx-ingress-controller不会做任何事情(意图使用“通配符”TLS证书) . 因此,我在我使用的入口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
    

相关问题