【发布时间】:2020-07-14 06:57:28
【问题描述】:
我正在尝试使用auth_request 模块来检查是否允许用户访问某个文件。用户在/my/download/uri/<File ID> 发布请求。我希望将授权请求发布到auth_service:9999/files/<File ID>。我的配置的相关部分如下:
location /my/download/uri {
auth_request /auth/files/$uri;
alias /my/file/directory;
}
location /auth {
internal;
proxy_pass http://auth_service:9999/;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
}
请求被授权服务接收,但在字面上 /files/$uri;变量未放置。我尝试先通过set 变量准备好URI,但无济于事。如何让 nginx 正确引导授权请求?
(注意:我知道我可以通过 X-Original-URI 在授权请求的标头中包含原始请求。但是,这意味着我必须在授权服务器上对完整 URI 进行额外处理才能获得相关数据,如果有办法首先将授权请求发布到正确的 URI,我宁愿不这样做。)
【问题讨论】:
-
尝试使用
auth_request /auth;和proxy_pass http://auth_service:9999/files/$uri; -
@IvanShatsky 将
$uri添加到/auth中的proxy_pass会导致nginx 给出以下错误:[error] 6#6: *2 no resolver defined to resolve auth -
通过标头将
$uri转发到授权服务并打印它会显示它是/auth,而不是文件ID。看起来auth_request忽略了当前的 URI。 -
@Wichilie 你设法让它工作了吗?有同样的问题
标签: nginx authorization auth-request