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";
}