【发布时间】:2020-01-31 11:47:35
【问题描述】:
我的网络服务有多个这样的网址:
POST /service
GET /service/a59aeaba-7f3f-4826-896a-aeb48e1db256
POST /service/a59aeaba-7f3f-4826-896a-aeb48e1db256/action1
POST /service/a59aeaba-7f3f-4826-896a-aeb48e1db256/action2
...
另外,我有不同的 url 有授权检查,如果成功将返回代码 200,如果失败将返回 401:
GET /service/auth/a59aeaba-7f3f-4826-896a-aeb48e1db256
现在路径中的这个uuid值作为参数,它是动态值。
我不知道如何捕获/service/{uuid}/* url 并将auth_request 设置为/service/auth/{uuid} 然后,成功响应后继续/service/{uuid}
在 Nginx 中甚至可以做到这一点吗?
【问题讨论】:
-
继续 /service/{uuid} 是什么意思?您有办法捕获字符串和 proxy_pass 或重定向到 service/auth/{uid}。我觉得如果您控制 /service/auth/{uuid}/ 的返回码是可以做到的,但它是一个完整的 3 proxy_pass 和不同的配置。你能告诉我验证成功和不成功的验证返回什么http代码吗?
-
@flaixman 成功返回200,失败返回401
-
@Mr.D 你找到解决方案了吗?我陷入了类似的情况,我需要从 location 指令中获取捕获组(正则表达式)才能在 proxy_pass 中使用。它在没有 auth_request 时有效,但在我使用 auth_request 时无效。
标签: nginx auth-request