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

标签 kubernetes kubernetes-ingress nginx-ingress

我在Kubernetes中使用Ingress资源设置了自定义Nginx入口 Controller ,而不是使用“default-http-backend service”,而是使用自定义应用程序作为默认后端服务,用于默认请求。我还为我的服务使用了设置为kubernetes secret 的自定义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

---

最佳答案

我需要为没有设置规则的默认请求配置自定义服务(不是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

关于kubernetes - 在Kubernetes Nginx Ingress Controller中,从http重定向到https不适用于自定义后端服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52552686/

相关文章:

kubernetes - 如何在部署前将环境变量注入(inject) Kubernetes Pod

kubernetes - Kubernetes证书管理器和Nginx

kubernetes - 使用 ALB 重定向到外部资源的入口

nginx - K8S 裸机 nginx-ingress-controller

kubernetes - 如何使用反向代理入口在Azure Kubernetes群集上设置Kibana(EFK堆栈)?

kubernetes - Prometheus - 路由中使用的未定义接收器\"null\"

sql-server - kubernetes : an error occurred during the pre-login handshake 上的 SQL Server

Kubernetes 入口 Controller 找不到 TLS 证书 key

python - 使用 keycloak 进行 flask 应用程序 OAuth 登录的 ssl.SSLCertVerificationError

nginx - Nginx在上游响应日志中显示2种不同的状态