请问使用New API或One API的佬友,有没有好方法控制API速率,去防止滥用。

问题如题。比如我要实现40次/3小这种需求。
这个功能很实用,但是看new api 和 one api 对速率控制支持不是很好。

在Readme找到参数:
GLOBAL_API_RATE_LIMIT:
全局 API 速率限制(除中继请求外),单 ip 三分钟内的最大请求数,默认为 180

GLOBAL_WEB_RATE_LIMIT:
全局 Web 速率限制,单 ip 三分钟内的最大请求数,默认为 60

固定三分钟,设置次数,在next chat好像不起作用。–有成功应用这两个参数的佬友?正确食用方式使怎么样?

1 个赞

自顶一下,等快答。

本身不能实现的。得自己外面包一层

4 个赞

nginx配置下ip速率限制,可以简单的限制单ip的访问速率
不过好像没法根据apikey来限制

看来原作的坑还是没填完。

懒人版,去试试。是个不错建议。

L站Seo真强,就在首屏找到这个问题。

image

针对 ip 限制不太行,很多前端都是部署在 vercel 上的,它就不是固定 ip,限制不到人家

事是这么个事。想得还是比较全。

试试CF规则限制?

免费版也是基于IP,付费版玩法多点。蟹蟹。

没有这个功能

套cf可以用规则

确实,付费规则

如果nginx恰好支持lua,则判断下key做下限速,只需要gpt写点代码就欧克了

http {
    lua_shared_dict auth_limit 10m;  -- 用于存储速率限制数据的共享内存区域

    server {
        listen 80;

        location / {
            content_by_lua_block {
                local function rate_limit(key, limit, period)
                    local auth_limit = ngx.shared.auth_limit
                    local count = auth_limit:get(key)

                    if count == nil then
                        auth_limit:set(key, 1, period)
                    elseif count + 1 > limit then
                        return false, "Too Many Requests"
                    else
                        auth_limit:incr(key, 1)
                    end

                    return true
                end

                local auth_header = ngx.var.http_authorization
                if auth_header == nil then
                    ngx.status = ngx.HTTP_UNAUTHORIZED
                    ngx.say("Missing Authorization header")
                    ngx.exit(ngx.HTTP_UNAUTHORIZED)
                end

                local key = auth_header
                local limit = 30  -- 每分钟限制30次请求
                local period = 60  -- 速率限制的时间窗口(秒)

                local ok, reason = rate_limit(key, limit, period)
                if not ok then
                    ngx.status = ngx.HTTP_TOO_MANY_REQUESTS
                    ngx.say(reason)
                    ngx.exit(ngx.HTTP_TOO_MANY_REQUESTS)
                end

                -- 在这里处理请求
            }
        }
    }
}
4 个赞

你nignx玩挺6。

同求,别沉

我套的cf用ip限制,好像是10秒钟100条

cf可以限制速率的。