Facing content-type issue with try_files

Hello,

To serve static contents i.e. images I use try_files directive of Nginx.
My
configuration location block is as below.

location ~* \.(jpg|jpeg|png|gif)$ {
    try_files $request_uri  @missingImg;
}

@missingImg is named location block with proxy_* directive.

The above configuration works fine if the image file name ends with jpg,
gif, jpeg, png extension in disk. When image file name(stored in disk)
includes query string like “example.jpg?a=123” then request to such
image
is being served with application/octet-stream content-type . Because of
the
wrong content type, image is not being displayed and browser prompt to
download image.

Could someone suggest me what am I doing wrong here?

Thanks,
Makailol

Hello,

Could someone help me with my previous query?

Actually the problem is that when image file doesn’t have an extension
it
is not being served with proper content type. Instead it is served with
“application/octet-stream” content-type. Due to this browser try to
download image instead of displaying it.

Is it necessary to have an extension to image file to set proper
content-type for Nginx? Couldn’t web server set the content-type from
file
type
?

Thanks,

On 6 May 2014 16:39, Makailol C. [email protected] wrote:

Is it necessary to have an extension to image file to set proper
content-type for Nginx? Couldn’t web server set the content-type from file
type
?

That would require Nginx to inspect the file contents and make a guess
as
to what file type it is. I don’t know if it could do that.

You could try just using:

add_header Content-Type image/jpeg;

And hope that the user’s web browser will automatically work out the
correct Content-Type, if the image was actually a PNG or something.

Cheers,
Nicholas Sherlock