Tomcat 执行 ssl 终止会话时未检测到
Tomcat when doing ssl termination session isn't detected
当使用 nginx
(Kubernetes 集群中的 nginx 控制器)执行 SSL 终止并将数据发送到 apache 和 tomcat 作为普通 HTTP 时会有什么不同,这可能会阻止我们的应用程序检测到登录会话?
一切正常,希望我们的应用程序有一个叫做 DetectLogin
class 的东西,并且在使用 nginx
SSL 终止时它不会检测到用户会话。如果我禁用 nginx
SSL 终止并启用 SSL 直通,那么我们的应用程序可以检测到登录会话。
在日志中,我看到 Port 8009
AJP 端口正在处理检测登录,但未检测到会话。
我们的流量就像 LB -> Nginx 控制器 -> Apache httpd(用于静态内容)-> Tomcat(用于提供 JSP 内容)。 Apache 使用 (mod_jk)
.
使用 AJP 端口转发与 tomcat 相关的所有 JSP
有关故障排除的任何建议都会有所帮助。
@Piotr P. Karwasz 感谢您的评论我能够弄清楚 nginx 会话 cookie 名称与 TOMCAT cookie 名称相同。我禁用了以下所有功能,因为我只是在测试它是否有任何效果。禁用或更改 session-cookie-name
解决了问题。
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "JSESSIONID"
nginx.ingress.kubernetes.io/affinity-mode: "persistent"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
当使用 nginx
(Kubernetes 集群中的 nginx 控制器)执行 SSL 终止并将数据发送到 apache 和 tomcat 作为普通 HTTP 时会有什么不同,这可能会阻止我们的应用程序检测到登录会话?
一切正常,希望我们的应用程序有一个叫做 DetectLogin
class 的东西,并且在使用 nginx
SSL 终止时它不会检测到用户会话。如果我禁用 nginx
SSL 终止并启用 SSL 直通,那么我们的应用程序可以检测到登录会话。
在日志中,我看到 Port 8009
AJP 端口正在处理检测登录,但未检测到会话。
我们的流量就像 LB -> Nginx 控制器 -> Apache httpd(用于静态内容)-> Tomcat(用于提供 JSP 内容)。 Apache 使用 (mod_jk)
.
有关故障排除的任何建议都会有所帮助。
@Piotr P. Karwasz 感谢您的评论我能够弄清楚 nginx 会话 cookie 名称与 TOMCAT cookie 名称相同。我禁用了以下所有功能,因为我只是在测试它是否有任何效果。禁用或更改 session-cookie-name
解决了问题。
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "JSESSIONID"
nginx.ingress.kubernetes.io/affinity-mode: "persistent"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"