目前想实现这样一个功能:用户发出请求在获取服务器 A 的内容前,先查询服务器 B 是否有权限,如果有,则将请求转发给 A,返回内容。如果没有,返回给用户权限不足的信息。
最近刚入门 nginx,我的一个实现思路是用户原始请求到达后 subsequent 模块产生一个新请求到服务器 B,根据 B 的返回结果来确定是否用 proxy_pass 原请求到服务器 A。我看《深入理解 nginx 》这本书讲解 B 返回之后的回调函数一般是构造响应包发送给用户,不知在这一步再产生一个 subsequent 的做法是否可行呢?
恳请大家指教~~
1
siteshen 2018-05-07 08:59:55 +08:00
没在 nginx 中实现过这么复杂的逻辑,用 lua 应该能做到。可以考虑直接在 A 服务器代码中请求 B 服务器是否有权限。
|
2
chenqy930 OP 因为服务器 A 的代码不便修改,所以还是想尽量用代理实现,我去看看 lua,感谢~
|
3
Judoon 2018-05-07 11:29:33 +08:00
难道不是所有请求都打到 B,
然后 B 判断是否有权限,没权限直接返回给 nginx 403,有权限再向 A 请求了结果后返回给 Nginx 吗? 这样所有的逻辑处理都在 B,A 的代码也不用改,nginx 也只做了反代的功能,结构不是更清晰吗? |
4
chenqy930 OP 有道理啊,可是 B 也不便修改呢- -
|