x-accel-redirect + Content-Disposition
Igor Sysoev
is at rambler-co.ru
Wed Jul 20 14:43:55 MSD 2005
On Wed, 20 Jul 2005, kirill ivanov wrote:
> Ситуация такая. У нас есть клиент, у клиента есть проект,
> подразумевающий отдачу большого количества статических файлов
> (сервис типа fload.ru, rapidshare, etc).
>
> Все файлы хранятся на диске с "левыми" именами, настоящие имена
> файлов лежат в базе данных. До того как "лёг" апач под нагрузкой
> (что произошло в первый же день :), файлы отдавались следующим
> образом: php-скрипт отрабатывал клиентский запрос, доставал имя
> файла из базы, и подсовывал его клиентскому браузеру через заголовок
> Content-Disposition. Примерно так:
>
> Content-Disposition: attachment; filename=".$t['real_name']
>
> Мы оперативно переложили отдачу статики на nginx, работающий в
> качестве фронтенда (настроили internal location, и отдачу заголовка
> X-Accel-Redirect), и обнаружили, что при этом теряется
> Content-Disposition.
>
> Нельзя ли как-то сделать так, чтобы при отработке X-Accel-Redirect
> nginx отдавал клиенту Content-Disposition, пришедший от backend-а?
> Долго ли это, и реализуемо ли это вообще? А если не реализуемо - то
> может быть есть какой-то неочевидный workaround?
Можно. Прилагаемый патч передаёт "Content-Disposition" и ещё исправляет
ошибку в 0.1.39, из-за которой не передавался "Set-Cookie".
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
--- src/http/ngx_http_upstream.c Wed Jul 13 20:53:12 2005
+++ src/http/ngx_http_upstream.c Wed Jul 20 14:40:46 2005
@@ -118,7 +118,11 @@
{ ngx_string("Set-Cookie"),
ngx_http_upstream_ignore_header_line, 0,
- ngx_http_upstream_copy_header_line, 0, 0 },
+ ngx_http_upstream_copy_header_line, 0, 1 },
+
+ { ngx_string("Content-Disposition"),
+ ngx_http_upstream_ignore_header_line, 0,
+ ngx_http_upstream_copy_header_line, 0, 1 },
{ ngx_string("Cache-Control"),
ngx_http_upstream_process_multi_header_lines,
More information about the nginx-ru
mailing list