AWS 上的 Kubernetes HTTP 到 HTTPS 重定向,使用 ELB 终止 SSL

2023-11-25

我正在尝试为流向 Kubernetes 集群的流量设置一个简单的 HTTP 到 HTTPS 重定向。 SSL 终止发生在 ELB 上。当我尝试使用nginx.ingress.kubernetes.io/ssl-redirect = true它会导致无限重定向,这导致我设置一个配置映射来处理这个问题(nginx-ingress:启用force-ssl 时重定向过多).

现在似乎根本没有发生重定向。

我的入口服务定义为:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "3600"
    service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*'
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:...:certificate/...
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
  labels:
    k8s-addon: ingress-nginx.addons.k8s.io
  name: ingress-nginx
  namespace: ingress-nginx
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: http
  - name: http
    port: 80
    protocol: TCP
    targetPort: http
  selector:
    app: ingress-nginx
  type: LoadBalancer

我的配置映射定义为:

apiVersion: v1
kind: ConfigMap
data:
  client-body-buffer-size: 32M
  hsts: "true"
  proxy-body-size: 1G
  proxy-buffering: "off"
  proxy-read-timeout: "600"
  proxy-send-timeout: "600"
  server-tokens: "false"
  ssl-redirect: "false"
  upstream-keepalive-connections: "50"
  use-proxy-protocol: "true"
  http-snippet: |
    server {
      listen 8080 proxy_protocol;
      server_tokens off;
      return 307 https://$host$request_uri;
    }
metadata:
  labels:
    app: ingress-nginx
  name: nginx-configuration
  namespace: ingress-nginx
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: udp-services
  namespace: ingress-nginx

并且,入口定义为:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gateway-ingress
  annotations:
    nginx.ingress.kubernetes.io/cors-allow-credentials: "true"
    nginx.ingress.kubernetes.io/cors-allow-headers: Authorization, origin, accept
    nginx.ingress.kubernetes.io/cors-allow-methods: GET, OPTIONS
    nginx.ingress.kubernetes.io/cors-allow-origin: gateway.example.com.com/monitor
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - host: gateway.example.com
    http:
      paths:
      - backend:
          serviceName: gateway
          servicePort: 8080
        path: /
  tls:
  - hosts:
    - gateway.example.com

问题是我在负载均衡器上使用的目标端口与重定向服务器正在侦听的端口不匹配:

ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: http

这只是将所有内容发送到端口 80。它应该是这样的:

ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080

这样它就与 ConfigMap 相匹配:

data:
  ...
  http-snippet: |
    server {
      listen 8080 proxy_protocol;
      server_tokens off;
      return 307 https://$host$request_uri;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS 上的 Kubernetes HTTP 到 HTTPS 重定向,使用 ELB 终止 SSL 的相关文章

随机推荐

  • 使用 __add__ 自定义类以添加 NumPy 数组

    我有一个自定义类实现 add 和 radd 作为 import numpy class Foo object def init self val self val val def add self other print add print
  • GC 代表们,我错过了什么? (我的代表没有被收集)

    我有一个类保留一个代表 以便稍后懒惰地评估某些内容 一旦我评估了它 通过调用委托 我清除了对委托的引用 希望它符合收集条件 毕竟 如果它被构造为匿名方法 它可能会保留大量局部变量 我尝试构建一个单元测试来验证这一点 但它似乎并没有按照我计划
  • Mercurial 缺少版本日志

    我在使用 Mercurial 通过 TortoiseHg 时收到 缺少转速日志 错误 有人知道如何修复这个仓库吗 hg repository C Source Project verify verbose repository uses r
  • Windows BAT:测试特定文件是否为空

    我想检查 Windows bat 文件中的特定文件是否为空 这是我的非工作脚本 set dir C test set file dir fff txt cd dir if file zi 0 exit ftp s dir ftp actio
  • 如何将 Pandas Dataframe 写入 HDF5 数据集

    我正在尝试将 Pandas 数据帧中的数据写入嵌套的 hdf5 文件中 每个组内有多个组和数据集 我想将其保留为单个文件 该文件将来每天都会增长 我尝试了以下代码 它显示了我想要实现的目标的结构 import h5py import num
  • 在Python中读取csv文件时获取“字符串内的换行符”?

    我在 Django Architecture 中有这个 utils py 文件 def range data ip r f open os path join settings PROJECT ROOT static csv GeoIPCo
  • 在 Objective C 中声明、属性、综合和实现 int[] 数组

    如何在 Objective C 中声明 设置属性 合成和实现大小为 5 的 int 数组 我正在为 iPhone 应用程序编写这段代码 谢谢 我认为 Cocoa y 要做的就是隐藏 int 数组 即使您在内部使用它也是如此 就像是 inte
  • 从mysql表读取utf-8内容[重复]

    这个问题在这里已经有答案了 我有一个 mysql 表 其中包含内容 结构在这里 我想读取该表的内容并将其打印为html 这是我的代码
  • Python:重新查找最长序列

    我有一个随机生成的字符串 polymer str diol diNCO diamine diNCO diamine diNCO diamine diNCO diol diNCO diamine 我想找到最长的 diNCO 二醇 序列和最长的
  • 获取嵌入的 mp3 文件嵌入艺术失败

    我正在尝试获取 MP3 文件的专辑封面 我认为最好 最干净的方法是使用 MediaMetadataRetriever 类 但由于某种原因 调用 getEmbeddedPicture 方法不起作用 图像未显示 LogCat 显示错误 04 2
  • 有没有一种简单、优雅的方式来定义单例? [复制]

    这个问题在这里已经有答案了 定义的方式似乎有很多种单身人士在Python中 关于 Stack Overflow 有共识吗 我真的不认为有必要 因为带有函数 而不是类 的模块可以很好地作为单例 它的所有变量都将绑定到模块 无论如何都不能重复实
  • 为什么 Angular 在 app.modules.ts 中导出空类?

    我是 Angular 的新手 我正在使用 Angular 4 并且我使用 Angular CLI 制作了一个应用程序 通过ng new命令 在 main ts 中 我们有 import AppModule from app app modu
  • Material-UI 自动完成和 TextField 触发谷歌自动完成

    我正在尝试在我的项目中实现自动完成组件 但在一段时间后从浏览器获取自动填充 自动完成 你知道我怎样才能将其关闭吗
  • Android 中的 ProgressDialog 关闭

    当我单击列表项时 我想打开一个 ProgressDialog 该列表项从 Web 服务中打开所单击项的数据 ProgressDialog 需要一直显示 直到单击的项目的 WebContent 打开为止 我知道使用进度对话框的代码 但我不知道
  • jQuery 中的 addEventListener [重复]

    这个问题在这里已经有答案了 可能的重复 jQuery 相当于 JavaScript 的 addEventListener 方法 也来自一个非常好的 jQuery 教程 http itunes apple com in app designm
  • 如何在 Savon 中将对象与 xsi:types 一起使用

    我正在尝试使用 Savon 发出一些 SOAP 请求 但恐怕我需要在某种程度上超出基础知识 我需要发送以下内容
  • 简单的 jq 过滤器在 Windows shell 中不起作用,各种引用问题

    我非常努力地让 Windows shell 与 jq 一起工作 但惨遭失败 我希望这种事情能够发挥作用 echo a b c Downloads jq exe r data map SNAME 但我收到一个错误 jq 错误 语法错误 意外的
  • 在 MVC 中“#include file”的正确方法是什么?

    我想做这样的事情 但在 ASP Net MVC 应用程序中执行此操作感觉是错误的 在 ASP Net MVC 项目中是否有更好的方法来实现相同的目标 or 或者他们中最好的都使用编辑器模板 如果此部分包含用于编辑视图模型属性的输入 或显示模
  • RDF 词汇和谓词

    我正在尝试将一些数据转换为 RDF 格式 我能够使用 dc 和 foaf 类型创建基本本体 问题是 对于更复杂的本体 我需要一些更具体的谓词 我正在寻找一些更具体的词汇表 但我不确定词汇表的含义 它只是一个 URI 可能是某个网站 其中包含
  • AWS 上的 Kubernetes HTTP 到 HTTPS 重定向,使用 ELB 终止 SSL

    我正在尝试为流向 Kubernetes 集群的流量设置一个简单的 HTTP 到 HTTPS 重定向 SSL 终止发生在 ELB 上 当我尝试使用nginx ingress kubernetes io ssl redirect true它会导