Nginx - 两个链接的 Nginx 实例上的会话持久性

Nginx - 两个链接的 Nginx 实例上的会话持久性

我有一个非常特殊的用例 - 我想知道是否没有更好的解决方案。

用例:多个用户应该能够同时访问来自 Nginx 实例 (A) 的大约 1000 个目标实例 (C1 至 C1000) 中的一个。不幸的是,100 个目标实例必须分别位于单独的 Nginx 实例 (B1 至 B10) 后面作为反向代理。

问题:如果多个用户同时从各自的客户端跳转到 A,然后从那里跳转到 B Nginx 实例之一,再从那里跳转到底层 C 目标实例之一,那么就会出现如何确保每个会话的一致性的问题。此外,C 目标实例必须能够在通过 A-Nginx 实例到达此 C 目标实例的相应客户端上设置会话 cookie,然后从那里跳转到相应的 B-Nginx 实例。

我的解决方案:每个呼叫 A 的用户都会获得一个单独的端口。A 和各个 B 实例之间的连接通过单独的端口运行,例如从 A 到 B1 10000、从 A 到 B2 11000 等,从 A 到 B10 20000。从 B 实例到 C 目标实例的连接也在专用端口上维护,例如从 B1 到 C0001 的连接在端口 10001 上,从 B1 到 C0002 的连接在端口 10002 上,等等。

我讨厌这种结构,但它确实有效。问题是 - 我错过了什么。我无法想象没有更优雅的方法。

有人知道如何以更优雅的方式解决这个问题吗?也许可以用会话 cookie 来解决?

亲切的问候,D.

相关内容