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

ilya at aniskovets.com ilya at aniskovets.com
Mon Aug 3 22:49:46 MSD 2009


Вобщем, в настоящий момент у меня единственный вопрос, как сделать так,
чтобы ключом к кэшу 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 at aniskovets.com>

> проблема в том, что для того чтобы php передал x-accel-redirect он должен
> сначала скачать файл с удаленного сервера (если его нет в кэше, который я
> организовал), это вызывает задержку перед началом скачивания файла. Как я
> понял, nginx может скачать файл в кэш и паралельно отдавать его, т.е.
> единственная проблема, как заставить nginx проверить валидна ли секретная
> ссылка, с того ли она IP что надо и не прошло ли N времени с момента ее
> генерации.
> Т.е. схема такая:
>
> Фронтенд: nginx + fastcgi php (ссылка проверяется, файл скачивается с
> Сервера 2, кэшируется (лимитированный размер кэша) и отдается клиенту)
>
> Бакэнд: nginx  (файловый архив)
>
> Организовать скачивание необходимо именно на Фронтенде, используя файловый
> архив только в случае, если нет в кэше архива. Хочу сделать так, чтобы в
> связке небыло php и соответственно загрузка начиналась без задержки на
> скачивание с бакэнда.
>
> 2009/8/3 Artyom Nosov <chip at unixstyle.ru>
>
> ilya at aniskovets.com wrote:
>>
>>> хардлинки я как раз сейчас делаю, но проблема в том, что мне нужно чтобы
>>> качалось именно с фронтенда и там же кешировалось, а сам файл сервер
>>> использовался по минимуму, поэтому я и хочу использовать nginx, так как он
>>> может кэшировать и в реалтайме отдавать, однако столкнулся с тем, что не
>>> могу в нем сделать проверки на валидность хэша. Сейчас я просто с помощью
>>> фронтентда и php гружу файл в кеш и отдаю его по внутренней переадресации
>>> nginx. php скрипт проверяет хэш IP + время и отдает файл. Хочется обойтись
>>> без php и добится реалтайма
>>>
>>
>> Что в вашем понятии "реалтайм"? Если nginx общается с php через fastcgi и
>> php на валидный запрос возвращает X-Accel-Redirect это вполне себе
>> оптимальная схема.
>>
>>
>> --
>> Sincerely,
>>
>> Artyom Nosov
>> http://www.unixstyle.ru | JID chip at xmpp.ru | ICQ 128417264
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20090803/2f807add/attachment.html>


More information about the nginx-ru mailing list