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