How to get a 404 logged with try_files?

Hi! Just started with Nginx after reading it reached 1.0.
Congratulation!

I’m trying to get my test site to return a “missing image” icon when an
image is missing, but have a 404 logged so I know I messed up something.
I want to specify the images name without file extensions, in case I
move some from PNG to JPG, or the other way around. My problem is that
try_files doc says last path MUST exist. I would like last path to be
$uri and cause a 404, not a 500. Tried using error_page to convert 500
to 404, but did not have any effect. Thanks for any advice!

location ~ ^/img/[^.]*$ {
try_files $uri.png $uri.jpg $uri.gif $uri;
error_page 500 =404 /img/missing;
}

location /img/ {
error_page 404 /img/missing;
}

location = /img/missing {
rewrite .* /img/icon/missing.png;
}

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,194965,194965#msg-194965

Found it! It must look like this, putting =404 as last location in
try_files:

location ~ ^/img/[^.]*$ {
try_files $uri.png $uri.jpg $uri.gif $uri =404;
error_page 404 /img/missing;
}

That would be useful information to put in the try_files wiki…

Posted at Nginx Forum:
http://forum.nginx.org/read.php?2,194965,195019#msg-195019

On Mon, May 02, 2011 at 10:22:50AM -0400, monster wrote:

rewrite .* /img/icon/missing.png;

}

location /img/ {
error_page 404 /img/icon/missing.png;

location ~ ^/img/[^\.]*$ {
    try_files $uri.png $uri.jpg $uri.gif $uri =404;
}

}

location = /img/icon/missing.png {
# nothing
}


Igor S.

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