Nginx $upstream_cache_status not available when used in rate limiting

Francis Daly francis at daoine.org
Wed Jul 20 21:28:39 UTC 2016


On Wed, Jul 20, 2016 at 02:52:10PM -0400, linnading wrote:

Hi there,

> It is "to the same upstream server"  that I care about.  I would like to
> limit the request rate to the same upstream server.

That makes sense, thanks.

I am not aware of a way to achieve this directly in stock nginx.

I see that there is a third-party module at
https://github.com/cfsego/nginx-limit-upstream which looks like
it aims to do what you want; and I see that nginx-plus has a
"max_conns" value per server in an upstream block, documented at
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server

If non-stock is ok for you, possibly one of those can work?

> The Scenarios is like:
> 10 requests at the same time to the same upstream server, the upstream
> server should only receive requests at rate 1r/m. Last few requests will be
> delayed or rejected. But for these last few requests, some of them can be
> served by cache, they should not be delayed/rejected. 

I think that the limit_* directives implementation is such that the
choice is made before the upstream is chosen; and there are no explicit
limits on the connections to upstream. That is likely why the third-party
module was created.

Cheers,

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list