Nginx 添加request_auth认证模块
- 在需要鉴权控制的Nginx配置中,配置auth_request来指定用于鉴权的请求路径。用户访问/api会先访问鉴权路径
- 根据鉴权的请求返回的状态码,决定是否通过
location /api/{
auth_request /auth;
# 鉴权通过后请求转发到该地址
proxy_pass http://192.168.60.128:8080/success
}
location /auth {
# 声明该location块仅限内部调用,不用于反向代理
internal;
# 表示确定是否向上游服务器发送HTTP包体部分。
proxy_pass_request_body off;
# 设置请求头
proxy_set_header Content-type "";
# 进行验证,返回状态码
proxy_pass http://192.168.60.128:8080/verify
}
引用:https://cloud.tencent.com/developer/article/1079065
nginx-auth-request-module模块基本使用原理就是:
- auth_request对应的路由返回401 or 403时,会拦截请求直接nginx返回前台401 or 403信息;
- auth_request对应的路由返回2xx状态码时,不会拦截请求,而是构建一个subrequest请求再去请求真实受保护资源的接口;