当前位置: 首页 > 知识库问答 >
问题:

从超文本传输协议重定向到https不适用于库伯内特斯Nginx入口控制器中的自定义后端服务

虞唯
2023-03-14

我在库伯内特斯中设置了带有入口资源的自定义Nginx入口控制器,而不是“default-超文本传输协议-backend service”,我使用自定义应用程序作为默认请求的默认后端服务。我还使用了自定义SSL,它被设置为kubernetes机密,用于我的服务。问题是当我请求规则中提到的主机名时,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个答案

窦伟
2023-03-14

我需要为未设置规则的默认请求配置自定义服务(非默认http后端服务),并且此自定义服务应使用自定义SSL。目前,如果在入口规则中省略域名(目的是使用“通配符”TLS证书),nginx入口控制器不会做任何事情。因此,我在使用的入口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
 类似资料:
  • 我在K8S集群中面临一个奇怪的问题 基本上我有两个应用程序: identity manager(基于WSO2,但该问题与WSO2无关) 将管理X509身份验证的外部SAML2 IDP 为了使用这个外部SAML2 IDP,我配置了WSO2 当我尝试通过X509登录时,WSO2显示登录页面,我单击智能卡,重定向到外部SAML IDP。 在这种情况下,nginx入口为我提供了502个坏网关。如果我复制U

  • 我们在Glassfish v4上创建了一个网站,它使用8080端口作为http,8081端口作为https。我们的cisco防火墙将请求转发到端口80到端口8080,并将请求转发到端口443到端口8081。 但是我们不希望用户能够访问超文本传输协议网站。我们希望将所有请求重定向到超文本传输协议站点到https。怎么能做到呢?在Glassfish管理面板中,我们对配置进行了更改-

  • 新来的。我想知道是否有人可以帮助我区分我可以用来识别入口控制器和通过YAML和服务识别入口的特征。我有一个预先存在的集群,我认为入口控制器可能是通过helm安装的,但我不确定。有没有办法了解helm在安装nginx ingress控制器时使用的yaml?

  • SpringBoot应用程序从8080开始 nginx传入请求:443代理:8080 开始页是确定的https://site/但在SpringBoot chrome登录后重定向到超文本传输协议://site/(不是https://site/)为什么???如何修复 请求URL:https://site/login 申请方式:邮寄 状态代码: 302 远程地址:85.26.149.68:443 推荐人

  • 我试图更改client\u max\u body\u size值,因此我的nginx入口不会返回413错误。 我测试了一些解决方案。 这是我的测试配置图: 这些更改根本没有效果,加载后,在nginx控制器日志中,我可以看到有关重新加载配置映射的信息,但可以看到nginx中的值。形态相同: 我的nginx控制器配置使用以下图像:quay.io/kubernetes-ingres-controller

  • 我正在开发小型Spring mvc应用程序,其中用户需要重定向到带有一些超文本传输协议标头的外部应用程序。例如,用户在url上的应用程序1上http://localhost:8080/app1.在这个应用程序中,我们有一些表单的简单jsp页面,用户填写它。之后,我们需要在表单提交时收集这些数据,并将用户重定向到url上的另一个外部应用程序,如http://localhost:9090/app2 现