Игорь, спасибо за исчерпывающий, а главное - работающий совет!
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;
>> }
>> }
>>
>
>
>