ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

X-Accel-Redirect и проксирование


  • To: nginx-ru@xxxxxxxxx
  • Subject: X-Accel-Redirect и проксирование
  • From: "Анатолий Шарифулин" <sharifulin@xxxxxxxxxx>
  • Date: Tue, 16 Dec 2008 16:02:51 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:mime-version:content-type:x-google-sender-auth; bh=uhOUlUwIkonHF1a+GX0Ih1IN/4+yK6oiokupbnt6Iwk=; b=Z4yYsFzlgYZdGEtlUzIAbAj7xQN3CpU88vjaiZjZKDqA8WBWwTHtR0NdLRB/8CCwh8 Ut/yhGNz0mlNjCwtFOOHong4RYQQTZUeiz6T057U1o60vyFdAsH4M6wZcwKCQ/YHsM4Y xMxThAhadvVdfodW3HkD64VzqDbjqm/BfGSTM=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:mime-version:content-type :x-google-sender-auth; b=u9zzl+E7/pJBBtYcZSC9o8ma1SxBIb8ER+avA+lXcauOIW+lk9wkaTZ/XlDmXMSLx6 Dt0z6iXRg+D9rDtXyBO6NscDbM53A7In7VsBz7CjKcM5Ii6rfzsOqNIQ1j0Vbi/sXy8T FOXOPUP0QBnInmrm299SZ0dycVJAGOzGmlr6Q=

Привет!

Есть контент вида image.jpg, video.mp4, разложенный по папочкам с ID:

ID/
   image.jpg
   video.mp4
   ...
ID2/
   image.jpg
   video.mp4
   ...
...
  
Контент раздает nginx, нужно при скачке таких файлов отдавать "нормальные" названия.

Сделал так:

    location / {
        if ($args ~* test) {
            proxy_pass http://domain:9999;
            break;
        }
       
        expires max;
        root /path/data;
    }

На порту 9999 (на другом сервере) висит демона, который для каждой ID находит "нормальные" названия и отвечает на каждый запрос так:

200 OK
Server: Title Server/1.0
Content-Type:
Content-Disposition: attachment; filename="normalnoe_nazvanie.mp4"
X-Accel-Redirect: /data/1133/video.mp4

Далее запрос обрабатывает nginx:

    location /data/ {
        internal;
        expires max;
        root /path;
    }

В результате пользователь получает следующий ответ:

200 OK
Server: nginx/0.6.16
Date: Tue, 16 Dec 2008 12:44:24 GMT
Content-Type: text/plain; charset=utf-8
Last-Modified; Fri, 12 Dec 2008 10:02:45 GMT
Transfer-Encoding: chunked
Content-Disposition: attachment; filename="normalnoe_nazvanie.mp4"
Content-Encoding: gzip
Connection: Close

Т.е. ставится дефолтный Content-Type, а должен от отдающего файла, и нет Content-Length.
Как разрешить эту проблему?

Сначала была идея написать на nginx-perl, но у меня демон общается с БД не блокируясь. Поэтому решил написать свой демон.

--
С уважением,
Анатолий Шарифулин.


 




Copyright © Lexa Software, 1996-2009.