@Templar3d

Как с помощью nginx ограничить доступ к картинкам белым списком после 30 дней?

Через ftp заливаются картинки. Они отображаются через nginx.

Как создать правило: если картинка старее 30 дней то просматривать ее может только белый список ip адресов?

То есть nginx должен перед тем как отдать картинку увидеть ее время жизни. Нашел, что можно вроде решить через expires modified 30d, но как дальше - я не знаю.
  • Вопрос задан
  • 259 просмотров
Пригласить эксперта
Ответы на вопрос 1
dyuriev
@dyuriev
A posteriori
обычными правилами тут не обойтись.
решений несколько
  • отдать обработку данных картинок на бэкенд если есть (проксируете запросы до данных картинок в апач/php-fpm по location или что у вас там используется и уже в php с помощью filectime(); проверяете время создание файла и в случае если старше положенного - отдаете 403 ошибку или что пожелаете)
  • использовать ngx_http_perl_module
  • использовать какой нибудь другой модуль реализующий поддержку встраиваемого языка в nginx (lua или js, например)


Ну или совсем по хардкору без белого списка айпишников:
В крон вешаете команду, которая или удаляет
find /path/to/location/with/images/ -type f -mtime +30 -exec rm {} \;

или перемещает
find /path/to/location/with/images/ -type f -mtime +30 -exec mv {} /path/to/location/with/old_images/ \;

ну или запрещает чтение
find /path/to/location/with/images/ -type f -mtime +30 -exec chmod -r {} \;

-

UPD: команды писал по памяти, перед реализацией в продакшне перепроверьте в тестовой среде.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы