我正在尝试使用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正确地定向授权请求?
(Note:我知道我可以通过X-Original-URI
将原始请求包含在授权请求的报头中。但是,这意味着我必须在授权服务器上对完整的URI进行额外的处理以获取相关数据,如果有办法将授权请求发送到正确的URI,我宁愿不这样做。)
2条答案
按热度按时间6tdlim6h1#
你不能在auth_request中使用变量这显然是nginx https://trac.nginx.org/nginx/ticket/761的一个设计选择我是通过反复试验才想到这个的。我在变量中放入$uri时遇到了麻烦,不知道为什么。
8hhllhi22#
我使用这种方法,它适用于我的情况