Nginx $upstream_cache_status not available when used in rate limiting

Francis Daly francis at
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 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

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.


Francis Daly        francis at

More information about the nginx mailing list