NGINX Location Matching Question - Case insensitive matching at the start of a URI

Jonathan Matthews contact at
Thu Dec 5 23:40:16 UTC 2013

On 5 December 2013 23:29, Brad Van Sickle <bvs7085 at> wrote:
> Hi,
> I'm running in a somewhat urgent issue where I have to make a
> case-insensitive location match on a URI segment that is at the
> beginning of the URI.
> so I want to match
> /uri-segment/*
> /URI-segment/*
> /Uri-Segment/*
> etc..
> I know that this will match the start of the URI:
> location ^~ /uri-segment

It will, but that's not what the regex-alike "^" means there. There,
it means "... and if this /does/ match, stop immediately and don't
consider any regex matches". See for more information. (I
personally consider this a really bad choice of character by nginx -
it /always/ confuses me!)

> and this will match regardless of case:
> location ~* /uri-segment(.*)
> But chaining them together and using ^~*doesn't seem to work.  Is this
> possible?  If so what am I missing?

Seeing how you said this is urgent, I'll not do what I /normally/ do
and just give you pointers to the docs that'll help you :-)

You want

location ~* ^/uri-segment(.*) { }


More information about the nginx mailing list