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

Максим Чечель maximchick at gmail.com
Sun Nov 4 00:29:46 MSK 2007


Игорь, спасибо за исчерпывающий, а главное - работающий совет!

Igor Sysoev пишет:
> 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;
>> 	 }
>>      }
>>     
>
>
>   






More information about the nginx-ru mailing list