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