Nginx实现网关级鉴权
发现接口被人滥用了,实现一个鉴权接口去防止滥用吧(一群死黑产NMD)!
基础鉴权
location /private/ {
auth_request /auth;
#... 这里调用了auth鉴权
#auth_request /auth.php;
#php文件这样鉴权请求
}
根据请求设置变量值
# ...
auth_request_set $auth_status $upstream_status;
# ...
以下是一个完整变量值传递示例:
// 这里是鉴权文件
header("X-Forwarded-User: SafeUser");
那么在nginx配置文件里面这样写:
auth_request_set $user $upstream_http_x_forwarded_user;
# 接下来就可以用$user进行判断什么的操作了哦,当然这样的操作可以传递cookie!
什么?你想实现复杂一点的?
不是没有,只不过我看见他们的例子都是通过额外实现一个/auth
实现的:
location = /auth {
internal;
proxy_method GET;
proxy_pass http://auth-server/;
proxy_pass_request_body on;
proxy_no_cache "1";
}