Должен ли я использовать Django или Nginx для обслуживания файлов изображений stati c? Их пути к файлам генерируются Django? - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь обслуживать стати c изображений с сервера. Путь, в который сохраняются изображения, генерируется с помощью функции, которую я написал для массового хранения изображений.

По сути, имя файла изображения становится ha sh индекса изображения в базе данных. Например, имя файла первого изображения будет 356a192b7913b04c54574d18c28d46e6395428ab.

Затем путь извлекается из имени файла на основе первых четырех символов ha sh. Для указанного выше файла путь будет /static_root/35/61/356a192b7913b04c54574d18c28d46e6395428ab.

Проблема заключается в том, что, когда клиент запрашивает определенный файл (ie / images / 356a192b7913b04c54574d18c28d46e39, image3939, 3939) все еще нуждается в деконструкции. Я хочу использовать Nginx, чтобы снять нагрузку с моего приложения Django, но функция для декодирования / кодирования путей к файлам написана в python. Как я должен преобразовывать URL и обслуживать изображение?

1 Ответ

2 голосов
/ 13 февраля 2020

Вы можете использовать заголовок X-Accel-Redirect для обслуживания файла с Nginx.

В основном вы указываете путь к файлу, и Nginx будет обслуживать этот файл по тому же URL.

def your_view(request):
    response = HttpResponse()
    response['X-Accel-Redirect'] = "path/to/image.png"
    return response

Посмотрите здесь: Django Nginx X-Accel-Redirect для защищенных файлов в Webfaction или https://www.djangosnippets.org/snippets/491/ для подробного примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...