Dynamic rate limiting per ip

Hello Folks,

i have some setup with multiple server and i offer downloads for the
users,
in the case my servers bandwidth is overloaded i want the people to be
able
to start the download but with limited rate so the don’t have to wait in
some kind of queue till the get there downloadlink. As soon as some
slots
frees the person highest in the queue download rate should increase to
the
max.

Any Ideas if this is possible with the limit_rate of the http core
module
and lua?

If it would be possible to make 2 zone dicts where the ips of the the
slow
and fast connections are in. And if someone ratelimit is dropped his ip
gets
removed from the slow dict and added to the fast dict.

Posted at Nginx Forum:

nobody an idea?

Posted at Nginx Forum:

Hello!

On Thu, Jan 2, 2014 at 12:54 PM, theotow wrote:

Any Ideas if this is possible with the limit_rate of the http core module
and lua?

You can use ngx_lua alone to do this.

If it would be possible to make 2 zone dicts where the ips of the the slow
and fast connections are in. And if someone ratelimit is dropped his ip gets
removed from the slow dict and added to the fast dict.

GitHub - openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers

Yes, you can surely do that. You can use ngx.sleep() to hold back the
exceeding clients without blocking other requests served by the same
nginx worker.

Regards,
-agentzh