Имеется mod_perl скрипт, который регистрирует, кто какой файл тянет. По
кукам. И кому какой файл можно тянуть, а кому нельзя. По ним же. Куки
назначаются при первой попытке утянуть файл.
Отдача файла сейчас происходит все через тот-же mod_perl (send_file).
Поскольку он стоит за акселератором (до недавнего времени сквид, теперь
вот nginx прилаживаю), это не смертельно. Но все ж таки и не сильно
здорово. Приходится докачку и т.п. вещи делать на перле, плюс туда-сюда
гоняется файл... Некузяво, одним словом.
Внимание - вопрос. Можно ли как-нибудь из бэкэнда отдать редирект,
который не клиент отработает, а nginx, чтобы всякие там докачки из кода
убрать и вообще статику апачу в руки не давать, а решить
пущать/непущать, зарегистрировать факт доступа и отпустить с миром? Без
передачи клиенту редиректа, втихую?
Более легкий вариант - без разграничения доступа и выдачи кук перед
скачкой, просто регистрировать факт доступа в бэкэнде а выдавать статику
nginx, опять же без передачи редитекта клиенту?
Сейчас такого нет, но достаточно легко добавить возможность, чтобы по
получении в ответе бэкенда заголовка "X-Accel-Redirect: /uri", nginx
стал бы обрабатывать /uri. Снаружи location с /uri можно закрыть
директивой internal.
Игорь Сысоев
http://sysoev.ru