ПРОЕКТЫ 


  АРХИВ 


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]

Re: secure_link + кэширование



Вобщем, в настоящий момент у меня единственный вопрос, как сделать так, чтобы ключом к кэшу nginx была часть url и в случае если по этому url 404, то контент и кэша юзеру не выдавать

т.е. на запрос http://frontend/secure_link/file_id/filename
кэш nginx должен попробовать закешировать по ключу file_id файл на http://backend/secure_link/file_id/filename и если там 404, то не отдавать юзеру контент.

я так понимаю это что-то вроде
rewrite /.*?/(\d+)/.*
proxy_cache_key $1
proxy_cache_use_stale off

к сожалению, не очень хорошо знаю синтаксис ngix, чтобы сделать правильно

2009/8/3 <ilya@xxxxxxxxxxxxxx>
проблема в том, что для того чтобы php передал x-accel-redirect он должен сначала скачать файл с удаленного сервера (если его нет в кэше, который я организовал), это вызывает задержку перед началом скачивания файла. Как я понял, nginx может скачать файл в кэш и паралельно отдавать его, т.е. единственная проблема, как заставить nginx проверить валидна ли секретная ссылка, с того ли она IP что надо и не прошло ли N времени с момента ее генерации.
Т.е. схема такая:

Фронтенд: nginx + fastcgi php (ссылка проверяется, файл скачивается с Сервера 2, кэшируется (лимитированный размер кэша) и отдается клиенту)

Бакэнд: nginx  (файловый архив)

Организовать скачивание необходимо именно на Фронтенде, используя файловый архив только в случае, если нет в кэше архива. Хочу сделать так, чтобы в связке небыло php и соответственно загрузка начиналась без задержки на скачивание с бакэнда.

2009/8/3 Artyom Nosov <chip@xxxxxxxxxxxx>

ilya@xxxxxxxxxxxxxx wrote:
хардлинки я как раз сейчас делаю, но проблема в том, что мне нужно чтобы качалось именно с фронтенда и там же кешировалось, а сам файл сервер использовался по минимуму, поэтому я и хочу использовать nginx, так как он может кэшировать и в реалтайме отдавать, однако столкнулся с тем, что не могу в нем сделать проверки на валидность хэша. Сейчас я просто с помощью фронтентда и php гружу файл в кеш и отдаю его по внутренней переадресации nginx. php скрипт проверяет хэш IP + время и отдает файл. Хочется обойтись без php и добится реалтайма

Что в вашем понятии "реалтайм"? Если nginx общается с php через fastcgi и php на валидный запрос возвращает X-Accel-Redirect это вполне себе оптимальная схема.


--
Sincerely,

Artyom Nosov
http://www.unixstyle.ru | JID chip@xxxxxxx | ICQ 128417264





 




Copyright © Lexa Software, 1996-2009.