如果用户可以通过 API 服务器进行身份验证,则仅应允许用户访问特定的公共文件夹。
公共文件夹和 API 服务器位于运行 nginx 1.14 开源的同一台服务器上。
我的想法是将ngx_http_auth_request_module
授权标头传递给 API 服务器,如果成功则返回 200 响应代码,如果失败则返回 500 响应代码(这是构建 API 的方式)。
但我不确定如何实现它。这是我尝试过的,但似乎没有传递标头:
location /test/ {
auth_request /auth;
}
location = /auth {
# I dont't know if internal; should be used. tried with and without
internal;
proxy_pass http://api.somedomain.dev;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Authorization $http_authorization;
# I also tried with and without the line below
proxy_pass_header Authorization;
}
当我使用 Postman 查询时http://api.somedomain.dev/auth+ 添加Authorization
标题即可。
当我查询时它不起作用http://api.somedomain.dev/测试+ 添加Authorization
标题。