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

Анатолий Шарифулин sharifulin at tochkak.ru
Tue Dec 16 16:02:51 MSK 2008


Привет!

Есть контент вида 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, но у меня демон общается с БД не
блокируясь. Поэтому решил написать свой демон.

-- 
С уважением,
Анатолий Шарифулин.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20081216/25d2392a/attachment.html>


More information about the nginx-ru mailing list