Вобщем, в настоящий момент у меня единственный вопрос, как сделать так, чтобы ключом к кэшу nginx была часть url и в случае если по этому url 404, то контент и кэша юзеру не выдавать
проблема в том, что для того чтобы php передал x-accel-redirect он должен сначала скачать файл с удаленного сервера (если его нет в кэше, который я организовал), это вызывает задержку перед началом скачивания файла. Как я понял, nginx может скачать файл в кэш и паралельно отдавать его, т.е. единственная проблема, как заставить nginx проверить валидна ли секретная ссылка, с того ли она IP что надо и не прошло ли N времени с момента ее генерации.
Т.е. схема такая:
Фронтенд: nginx + fastcgi php (ссылка проверяется, файл скачивается с Сервера 2, кэшируется (лимитированный размер кэша) и отдается клиенту)
Бакэнд: nginx (файловый архив)
Организовать скачивание необходимо именно на Фронтенде, используя файловый архив только в случае, если нет в кэше архива. Хочу сделать так, чтобы в связке небыло php и соответственно загрузка начиналась без задержки на скачивание с бакэнда.
хардлинки я как раз сейчас делаю, но проблема в том, что мне нужно чтобы качалось именно с фронтенда и там же кешировалось, а сам файл сервер использовался по минимуму, поэтому я и хочу использовать nginx, так как он может кэшировать и в реалтайме отдавать, однако столкнулся с тем, что не могу в нем сделать проверки на валидность хэша. Сейчас я просто с помощью фронтентда и php гружу файл в кеш и отдаю его по внутренней переадресации nginx. php скрипт проверяет хэш IP + время и отдает файл. Хочется обойтись без php и добится реалтайма
Что в вашем понятии "реалтайм"? Если nginx общается с php через fastcgi и php на валидный запрос возвращает X-Accel-Redirect это вполне себе оптимальная схема.