SagePtr
@SagePtr
Еда - это святое

В nginx можно ли задать соответствие uri и реальным файлам?

Задача вот в чём. Физически файлы хранятся как хэши от их содержимого, например,
files/a0f9/e225/c7852fd556678d85587e39ad18f650ab7d2fcd27e6377ebab2a99a27

Нужно задать соответствие, например, при запросе
users/alex/Безымянный.gif отдавать files/a0f9/e225/c7852fd556678d85587e39ad18f650ab7d2fcd27e6377ebab2a99a27

Возможно ли в nginx это как-нибудь сделать, не прописывая каждый файл отдельно в конфиге, а храня таблицу соответствий в БД? Или на худой конец, то же самое сделать средствами apache?
Можно, конечно, сделать символьные ссылки для каждого из файлов, либо при запросах дёргать какой-нибудь PHP, который будет анализировать URI, запрашивать его наличие в БД и по нему отдавать нужный файл. Но в первом случае мы получим ворох из символьных ссылок, во втором - производительность сильно упадёт.
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 3
@chromimon
Если файлов мало, то можно и таблицей хранить.
Или если можно по имени файла в URI сгенерировать его имя в файловой системе

- через OpenResty в nginx

Иначе - БД.
Вполне годится, к примеру, Tarantool или AeroSpike. Это будет очень быстро.
PHP тут лишнее звено.
Ответ написан
Комментировать
BuriK666
@BuriK666 Куратор тега Nginx
Компьютерный псих
с обработчиком производительность не сильно упадет (добавьте кэширование и т.п.) и
X-Accel-Redirect вам поможет.

https://www.opennet.ru/base/net/nginx_x_accel_redi...
Ответ написан
Комментировать
@pfg21
ex-турист
Мож лучше создать софт/хард-линк users/alex/Безымянный.gif, который будет указывать на files/a0f9/e225/c7852fd556678d85587e39ad18f650ab7d2fcd27e6377ebab2a99a27
проще и нагляднее понимается, удобнее управляется - сделать/удалить/переместить линки можно напрямую из файл-менеджера.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
23 апр. 2024, в 19:21
300 руб./за проект
23 апр. 2024, в 19:05
15000 руб./за проект
23 апр. 2024, в 19:01
7000 руб./за проект