程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ssl 终止负载均衡器后面的 Traefik 返回 404大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决ssl 终止负载均衡器后面的 Traefik 返回 404?

开发过程中遇到ssl 终止负载均衡器后面的 Traefik 返回 404的问题如何解决?下面主要结合日常开发的经验,给出你关于ssl 终止负载均衡器后面的 Traefik 返回 404的解决方法建议,希望对你解决ssl 终止负载均衡器后面的 Traefik 返回 404有所启发或帮助;

我有一个 K8s 设置,traefik 像这样暴露

kubernetes:
  ingressClass: traefik
service:
  nodePorts:
    http: 32080
serviCEType: NodePort

在后面,我将一些请求转发到不同的服务

APIVersion: extensions/v1beta1
kind: Ingress
Metadata:
  name: my-name
  Annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
    - host: my-host.com
      http:
        paths:
          - path: /my-first-path
            BACkend:
              servicename: my-nodeJs-services
              servicePort: 3000

当直接将 DNS 设置为解析到我的 ip 时,应用程序可以正常使用 http

http://my-host.com:32080/my-first-path

但是当有人通过 AWS ALB / API Gateway 添加 SSL 时,应用程序无法访问并出现 404-NotFound 错误

路线是这样的 https://my-host.com/my-first-path

在 AWS 规模上,他们配置了这样的东西

https://my-host.com => SSL Termination and  => ForWARD all to 43.43.43.43:32080

我认为这会失败,因为 traefik 期望 http://my-host.com 而不是 https://my-host.com 这导致它无法找到匹配的路线?或者可能在 ssl 终止时,主机名丢失,导致 traefik 找不到路由?

遇到这种情况我该怎么办

解决方法

我对 ALB 不是很熟悉,但可能发生的情况是负载均衡器收到的请求包含标头 Host: my-host.com,当它转发到您的入口控制器时,标头被 {{1} }.如果是这种情况,我会看到 3 种解决方案:

  1. ALB 可能能够将原始 Host 标头传递给目标。 (如果可能,您必须检查文档)
  2. 如果 Ingress 背后的应用程序不检查主机标头,您可以编写一个不检查特定主机的 Ingress。例如,在这些 examples 上,您可以看到没有指定主机字段。
  3. 如果名称解析在内部有效,您可以为目标定义一个名称,在您的 ALB 和入口中使用此名称。

大佬总结

以上是大佬教程为你收集整理的ssl 终止负载均衡器后面的 Traefik 返回 404全部内容,希望文章能够帮你解决ssl 终止负载均衡器后面的 Traefik 返回 404所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:404ssl返回