我在Nginx前端后面的两个位置有两个后端。后端A使用OAuth实现身份验证。后台B不知道。
我认为为位置B添加身份验证的一种懒散方法是首先将每个请求发送到后端A。我心里想的是:
request for /b/kitten.png --> [ nginx ]
[ nginx ] --> request for /index.html --> [backend A]
if A responds 200:
[ nginx ] --> request for /kitten.png --> [backend B]
otherwise return what A returned (redirect to OAuth)这在Nginx有可能吗?如果不是的话,也许是在OpenR校/HAProxy/Traefik?
发布于 2022-11-17 10:45:06
不是一个完整的答案,但有点太长,不能发表评论:
您所描述的设置在概念上类似于一个相当常见的策略:
这需要一种方法来验证客户端在反向代理中提交的标头/cookie/会话令牌。当然,其优点是由反向代理公开的应用程序不必提供它们自己的登录/身份验证方法。
对于nginx来说,一点lua代码似乎是创建这样一个方法的常见方法。
例如,access_by_lua方法通常用于将nginx和keycloak作为身份验证提供程序进行这种集成。参见示例:这里和这里
https://serverfault.com/questions/1115844
复制相似问题