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 ~ ^/.*([^/]\.[^/])$) {
set $name $1;
add_header Content-Disposition $name;
}
}
--
Игорь Сысоев
http://sysoev.ru