Case insensitive location

Hello there, i’m hoping someone can help me out with this. I’ve tried
different things but none have worked for me so far.

Here is my location block:

location ^~ /card/ {
root /home/site/public;
rewrite ^/card/([a-zA-Z0-9_+]+)/(.*).png$
/card.php?name=$2&type=$1 last;
expires epoch;

Some requests for images are being made with a capital ‘C’ in ‘Card’ and
causing 404s.

I’ve tried changing the location to “~* ^/card/” but that didn’t work,
there anything else I could try?

Thanks in advance.

Posted at Nginx Forum:,249105,249105#msg-249105

As the location
the solution you provided should work.

Ensure that:
1°) You are working with the right binary
2°) Configuration syntax is correct (nginx -t) and reload was successful
(no message in that direction in the error logs), thus effectively
reloading the configuration
3°) Requests starting with C and returning errors are matching the regex
being used
4°) The precedence of location syntax does not make another location
capturing the request (since requests are matched by one and only one
location block every time), thus having the requjest served incorrectly
(and returning 404 since content could not be found in the serving

B. R.

Thank you for the reply.

As far as I know, everything is fine, but it’s still not working for me.

When I disable caching, which includes pngs, and then use ‘location ~*
^/card’, I am able to access the images normally without capital
but still not with capitals.

With caching enabled, I cannot access images at all with the ‘location
^/card’ setup.

Caching is the main reason for me needing ‘^~’ on my location block, so
I can disable caching for these images alone.

Posted at Nginx Forum:,249105,249120#msg-249120

I’m still having no luck with it.

As I said before, when I use location ~* ^/card/, it just 404s all the
unless I disable my cache.

Here is my cache code, I have no idea why it does this.

Cache setup.

    location ~*  \.(jpg|jpeg|png|gif|ico|css|xml|js|woff)$ {
            expires 30d;
            root /home/site/public;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate,


Posted at Nginx Forum:,249105,249224#msg-249224

I do not know about caching nor do I take it into consideration as it is
not part of the problem as stated.

You stated that the location regex was the problem and you seem to have
taken the proper checks to verify the proper location is being used,
I assume the location regex is not the problem.

I see another regex in the location block, in the rewrite directive,
does not seem to be prepared to face different sensitivities of the
I guess you should follow that lead…
Please check your rewrite regex against case-sensitivity or, since the
regex match is already done at location level and you do not need
one, maybe consider using the

B. R.

do you have tryfiles enabled?

i’d try this to check, if the request reaches the nright location-block

location ^~ /card/ {

access_log /var/log/nginx/cards.log combined;


if so, your must look inside your locatiuon, if not, somwhere else



Posted at Nginx Forum:,249105,249226#msg-249226

Oh my, what an idiot i’ve been. Thank you very much for your post!

I moved it up above my cache and it works just fine, here is what i’ve
able to shorten it down to now:

location ~* /card/ {
rewrite (?i)^/card/([a-zA-Z0-9_+]+)/(.*).png$
expires epoch;

Thank you to everyone who posted to help me, it’s greatly appreciated!

Posted at Nginx Forum:,249105,249235#msg-249235

On Friday 11 April 2014 07:59:42 Callumpy wrote:

            root /home/site/public;
            add_header Pragma public;
            add_header Cache-Control "public, must-revalidate,


A quote from the documentation (

“Then regular expressions are checked, in the order of their
in the configuration file. The search of regular expressions
on the first match, and the corresponding configuration is used.”

Let me guess, your “Cache setup” comes first?

wbr, Valentin V. Bartenev

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs