4 messages in ru.sysoev.nginxtry_files and content type
FromSent OnAttachments
Xavier GrangierFeb 14, 2009 1:50 am 
Igor SysoevFeb 14, 2009 3:56 am.exten
Xavier GrangierFeb 14, 2009 4:40 am 
Arvind JayaprakashFeb 15, 2009 2:51 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:try_files and content typeActions...
From:Xavier Grangier (gran@gmail.com)
Date:Feb 14, 2009 1:50:05 am
List:ru.sysoev.nginx

Hello,

I have an issue with try_files and content-type ( nginx 0.7.34 ), it doesn't use the cache file extention to discover the mime.type so if we call a direct file host/sitemap.xml content type is ok, but if I call a directory host/faq/ the returned content-type is the default.

My default_type is set to application/octet-stream, my application is directory base ( host/faq/, host/register/ ), I only have a few call to files ( host/robots.txt host/sitemap.xml )

Most of the content is text/html but I can be sometimes for exemple text/xml or application/pdf.

For instance /cachedir/faq/host.index.html is the cache file for http://host/faq ( I use host in the cache file name to handle languages ) I could have a pdf version of the faq at the following url http://host/faq/pdf/ then the cache file would be /cachedir/faq/pdf/host.index.pdf

the problem is that once cached try_file would return the default_type for all those urls.

I don't know if this is the expected beavhiour, I expected try_files to return the type according to the cache file extension. Of course I can use text/html as default type but in this case I cannot handle multiple types fils within the same location.

with the old fashion way:

if (-f $request_filename/$host.index.html) { rewrite (.*) $uri/ $host.index.html break; } if (-f $request_filename/$host.index.pdf) { rewrite (.*) $uri/ $host.index.pdf break; }

types where correct.

Below three tests, first one a direct call returning content type is the one expected. Then my expected result would have been text/html instead of application/octet-stream

xav - is sorry for poor english xD

------------------------------------------------------------------------------------------

http { include /etc/nginx/mime.types; include /etc/nginx/fastcgi_params; index index.html; default_type application/octet-stream;

server { listen 10.0.0.181; server_name devel.1cafe.fr; root /home/cache/hard; error_page 599 = @django;

location @django { fastcgi_pass localhost:3000; }

location / { # default_type text/html; # try_files $uri$host.index.html $uri$host.index.pdf @django; # test purpose try_files $uri $uri/index.html $uri$host.index.html $uri $host.index.pdf @django; } } }

GET devel.1cafe.fr/sitemap.xml

2009/02/14 10:09:40 [debug] 22727#0: *1 http script var: "/sitemap.xml" 2009/02/14 10:09:40 [debug] 22727#0: *1 try to use file: "/sitemap.xml" 2009/02/14 10:09:40 [debug] 22727#0: *1 try file uri: "/sitemap.xml" 2009/02/14 10:09:40 [debug] 22727#0: *1 http filename: "/home/cache/ hard/sitemap.xml" 2009/02/14 10:09:40 [debug] 22727#0: *1 http set discard body 2009/02/14 10:09:40 [debug] 22727#0: *1 HTTP/1.1 200 OK Server: nginx Date: Sat, 14 Feb 2009 09:09:40 GMT Content-Type: text/xml Content-Length: 870 Last-Modified: Sat, 14 Feb 2009 08:51:51 GMT Connection: close Served-By: intra2 Accept-Ranges: bytes

GET devel.1cafe.fr/

2009/02/14 10:11:01 [debug] 22727#0: *2 http script copy: "/index.html" 2009/02/14 10:11:01 [debug] 22727#0: *2 try to use file: "//index.html" 2009/02/14 10:11:01 [debug] 22727#0: *2 try file uri: "//index.html" 2009/02/14 10:11:01 [debug] 22727#0: *2 http filename: "/home/cache/ hard//index.html" 2009/02/14 10:11:01 [debug] 22727#0: *2 http set discard body 2009/02/14 10:11:01 [debug] 22727#0: *2 HTTP/1.1 200 OK Server: nginx Date: Sat, 14 Feb 2009 09:11:01 GMT Content-Type: application/octet-stream Content-Length: 57050 Last-Modified: Sat, 14 Feb 2009 08:37:55 GMT Connection: close Served-By: intra2 Accept-Ranges: bytes

GET http://devel.1cafe.fr/faq/

2009/02/14 10:12:46 [debug] 22727#0: *25 http script copy: ".index.html" 2009/02/14 10:12:46 [debug] 22727#0: *25 try to use file: "/faq/devel. 1cafe.fr.index.html" 2009/02/14 10:12:46 [debug] 22727#0: *25 try file uri: "/faq/devel. 1cafe.fr.index.html" 2009/02/14 10:12:46 [debug] 22727#0: *25 http filename: "/home/cache/ hard/faq/devel.1cafe.fr.index.html" 2009/02/14 10:12:46 [debug] 22727#0: *25 http set discard body 2009/02/14 10:12:46 [debug] 22727#0: *25 HTTP/1.1 200 OK Server: nginx Date: Sat, 14 Feb 2009 09:12:46 GMT Content-Type: application/octet-stream Content-Length: 44232 Last-Modified: Sat, 14 Feb 2009 09:12:40 GMT Connection: close Served-By: intra2 Accept-Ranges: bytes