Встроенные mime-types

Igor Sysoev is at rambler-co.ru
Sun Nov 4 00:04:24 MSK 2007


On Sat, Nov 03, 2007 at 11:57:39PM +0300, Igor Sysoev wrote:

> On Sat, Nov 03, 2007 at 11:23:30PM +0300, Максим Чечель wrote:
> 
> > Есть такая задача: сделать виртуальный хост на котором лежит всякая
> > статика: картинки, видео и т.п., причём сделать это нужно таким
> > образом чтобы каждый запрошенный файл выдавался через
> > Content-Disposition, т.е. браузер предлагал пользователю его скачать.
> > Не найдя в документации ничего на эту тему закомментировал в
> > nginx.conf строчку:
> > 
> > include       conf/mime.types;
> > 
> > Полагая при этом, что теперь сервер будет отдавать все файлы как
> > octet-stream, поскольку в конфиге прописано умолчальное:
> > 
> > default_type  application/octet-stream;
> > 
> > однако этого не происходит: при запросе .jpg файла сервер отдаёт
> > корректный mime тип:
> > 
> > $ wget -S http://download.somehost.ru:8080/m/t/mtmam5ls.jpg
> > --23:17:26--  http://download.somehost.ru:8080/m/t/mtmam5ls.jpg
> >            => `mtmam5ls.jpg'
> > Распознаётся download.somehost.ru... 127.0.0.1
> > Устанавливается соединение с download.somehost.ru|127.0.0.1|:8080...
> > соединение установлено.
> > Запрос HTTP послан, ожидается ответ...
> >   HTTP/1.1 200 OK
> >   Server: nginx/0.5.26
> >   Date: Sat, 03 Nov 2007 20:17:26 GMT
> >   Content-Type: image/jpeg
> >   Content-Length: 96345
> >   Last-Modified: Thu, 01 Nov 2007 21:04:57 GMT
> >   Connection: keep-alive
> >   Keep-Alive: timeout=20
> >   Accept-Ranges: bytes
> > Длина: 96.345 (94K) [image/jpeg]
> > 
> > Каким образом nginx угадывает mime-type не имея "include
> > conf/mime.types;" в конфиге? Буду благодарен если поскажете ответ и на
> 
> http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#types
> 
> > первый вопрос: как отдавать все файлы заданного хоста через
> > Content-Disposition?
> 
> Как-то так:
> 
>      location / {
> 
>          types  { }
> 
>          default_type  application/octet-stream;
> 
>          root  ...;
> 
> 	 if ($uri ~ ^/.*([^/]\.[^/])$) {

- 	 if ($uri ~ ^/.*([^/]\.[^/])$) {
+ 	 if ($uri ~ ([^/]+)$) {

> 	     set   $name   $1;
> 	     add_header  Content-Disposition   $name;
> 	 }
>      }


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list