我想使用多个auth_request
指令来尝试在多个服务器上进行身份验证--也就是说,如果第一个身份验证服务器返回403
,则尝试第二个身份验证服务器。
location /api {
satisfy any;
auth_request /auth-1/;
auth_request /auth-2/;
proxy_pass http://api_impl;
}
location /auth-1/ {
internal;
proxy_pass http://auth_server_1;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
location /auth-2/ {
internal;
proxy_pass http://auth_server_2;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
但是nginx不能解析配置文件。
nginx: [emerg] "auth_request" directive is duplicate
有没有办法在nginx中实现这样的功能?
2条答案
按热度按时间zkure5ic1#
这里 是 我 的 解决 方案 后 , 发现 这个 问题 在 谷歌 寻找 同样 的 东西 :
/auth
上 的 nginx 只 使用 这个 上游 , 所以 它 将 依次 尝试 所有 的 身份 验证 " 服务 器 " ( 由于 返回 代码 503 ) , 直到 其中 一 个 成功 或 最 后 一 个 返回 401 。中 的 每 一 个
bnl4lu3b2#
我也遇到过类似的问题,但我找到了一个不同的解决方案,在某些情况下可能是可以接受的。它本质上创建了一个双代理层,这对性能有很大的影响。第一个代理层用于“身份验证”,第二个代理层用于“授权”。
以下配置未经测试,旨在传达概念,而非工作示例。