Nginx代理取决于用户

时间:2017-10-29 18:59:13

标签: nginx proxy

我需要根据用户使用不同的后端。我有几台服务器使用VPN隧道连接到主服务器。用户应登录主服务器,主服务器应根据用户名使用不同的后端。我确信它可以由nginx完成。

以下是详细信息:
- 服务器流程 - (已实施)
后端服务器通过OpenVPN连接到主服务器 主服务器上的OpenVPN配置为在连接事件上执行脚本
此脚本只请求后端获取唯一ID,并将ID和IP地址放入数据库 数据库还包含用户和后端ID关系表
- 用户流程 - (需要实施,这里只是一个想法)
用户通过https来到主服务器 输入登录名和密码
主服务器上的脚本在数据库中找到与该用户相关的服务器ID和IP地址
脚本设置像会话ID为cookie的cookie 在用户nginx的下一个请求中(使用会话ID和有关后端IP的信息)就像后端和用户之间的代理一样

有任何想法如何实现这个?

由于

1 个答案:

答案 0 :(得分:0)

最好的方法是通过粘性会话,Nginx免费版不提供,请参阅this link

您还可以为每种类型的用户使用特定路线,但这样做是不安全的。

我能想到的最后一个选项是使用模块Lua Resty for Nginx,请参阅https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/balancer.md