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 - 命令传递给Kubernetes Job and Pod

ssl - Cert-Manager Certificate creation stuck at Created new CertificateRequest 资源

kubernetes - GKE Ingress 获取 pod 就绪/活跃度的速度很慢

spring-boot - 基于 Kubernetes Ingress 路径的路由无法按预期工作

ssl - 如何将 Kubernetes Nginx Ingress 与 Consul 和 Consul Connect 集成

kubernetes - nginx-ingress 在 https 请求上返回默认后端

kubernetes - 部署未检测到 init-container 中容器镜像标签的更改

Kubernetes 和不安全的注册表

nginx - 两层 NGINX 反向代理,第二层带有 ssl_client_verify

docker - sh : curl: not found even install curl inside k8s pod