【问题标题】:Sticky sessions are not working using Nginx on Kubernetes粘性会话在 Kubernetes 上使用 Nginx 不起作用
【发布时间】:2020-11-07 23:45:37
【问题描述】:

我有一个部署,其中包含 2 个 pod,其中有一个 webapp。安装 Nginx 入口控制器以使用 tls-passthrough 公开这两个 pod。 我曾尝试使用注释来设置粘性会话,但无济于事。标头中没有 cookie,因此没有粘性。 我该怎么做才能让它发挥作用? 非常感谢您的明智回答。

我创建的 Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: ingress
 annotations:
 # nginx.ingress.kubernetes.io/secure-backends: "true"
 # nginx.ingress.kubernetes.io/ssl-passthrough: "true"
 # nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
 # nginx.ingress.kubernetes.io/rewrite-target: /
   nginx.ingress.kubernetes.io/affinity: "cookie"
   nginx.ingress.kubernetes.io/affinity-mode: "persistent"
   nginx.ingress.kubernetes.io/session-cookie-name: "wabam"
   nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
   nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
namespace: default
spec:
 rules:
  - host: wabam.moulip.lan
     http:
     paths:
      - backend:
          serviceName: wabam-ingress-svc
          servicePort: 443
        path: /

【问题讨论】:

  • 如果你 ssl-passthrough 那么你不能修改请求/响应(根据定义)。
  • 因为负载均衡器前端没有转发 Real-IP 标头
  • 大家好,我怀疑 ssl-passthrough 是罪魁祸首。我检查了我的网络应用程序日志,它是转发的实际客户端 IP。由于我不能让 webapp 以纯 http 方式侦听,Nginx 是否会接受终止 ssl 会话并仍然在 https 后面转发流量?
  • 如前所述,与ssl-passthrough 一起使用时,任何其他注释都不起作用。因此,我认为这不会像您描述的那样起作用。

标签: nginx kubernetes sticky-session


【解决方案1】:

我将此作为社区 wiki 答案发布,以提高知名度。

正如 cmets 中已经提到的:与 ssl-passthrough 一起使用时,任何其他注释都将不起作用。 official docs 也提到了这一点:

因为 SSL 直通适用于 OSI 模型 (TCP) 的第 4 层,并且 不在第 7 层 (HTTP) 上,使用 SSL Passthrough 会使所有 在 Ingress 对象上设置的其他注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-25
    • 2012-03-11
    • 2020-08-10
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2016-05-08
    • 2019-08-05
    相关资源
    最近更新 更多