Execution order of HttpLimitReq, proxy_pass and rewrites
Francis Daly
francis at daoine.org
Wed Mar 30 19:35:59 MSD 2011
On Wed, Mar 30, 2011 at 09:51:16AM -0400, j0nes2k wrote:
Hi there,
> okay, I see. So nginx seems to (randomly?) choose one of the location
> blocks - in my case it was the lower one using the proxy_pass directive.
There shouldn't be any randomness involved.
There's a Fine Manual at http://wiki.nginx.org/HttpCoreModule#location
> However I have several scripts running under /cgi-bin that need
> different limit_req settings - there are scripts that need to have a
> strong limit and others do not need a limit at all.
As Igor showed, use multiple location blocks.
> I have tried something like
>
> location /cgi-bin/ {
> if ($request_filename ~ test\.pl) {
Note that there's also a special warning about if() inside location{}
at http://wiki.nginx.org/IfIsEvil -- anything other than "return" or
"rewrite ... last" is likely to cause confusion.
> ...but unfortunately limit_req is not allowed in this context. Is there
> another option how I could get limit_req to work for me?
If your scripts don't use PATH_INFO, then something like
location = /script/one {
limit_req ...;
proxy_pass ...;
}
and if they do, then something like
location ^~ /script/two {} or location ^~ /script/two/ {}
with the same contents.
Good luck with it,
f
--
Francis Daly francis at daoine.org
More information about the nginx
mailing list