Django Предотвращение того, чтобы все могли видеть /media Files

На моем сервере nginx, если люди используют путь /media, они могут увидеть список всей папки с каждым файлом. Как я могу заблокировать, чтобы люди видели это, как в случае со страницей 404. Но я не могу отключить его в целом, потому что я ссылаюсь на этот путь с изображениями и прочим на других страницах. В итоге мне нужно отключить путь /media для пользователей, но не для самого сервера.

Я использую django.

Приветствую и благодарю за помощь

Я думаю, что вы только что наткнулись на распространенную проблему в Django. На мой взгляд, есть несколько решений, но с решением могут возникнуть проблемы:

  • Вы можете запретить nginx и django обслуживать медиа файлы как статические, и написать маршруты, которые будут проверять некоторые условия для каждого шаблона файла. Это даст вам большую гибкость (все, что вы можете сделать в Django), но у вас будет худшая производительность, потому что Django нужно отправлять файлы вместо Nginx
  • .
  • Я думаю, что есть решение (никогда не тестировал), чтобы обслуживать медиа файлы только через внутренний бэкенд NGINX, тогда ваш Django будет делать проверки, а затем перенаправлять внутри на соответствующий файл, который будет обслуживать NGINX
  • .

EDIT: Я думаю, что этот ответ объясняет последнее https://stackoverflow.com/a/43223478/9938410

Подозреваю, что ваш nginx настроен на autoindex on, который будет генерировать полный список каталогов для запрашиваемого пути. При обслуживании статического содержимого вашего сайта, вы обычно хотите отключить autoindex.

Nginx docs предоставляет более подробную информацию об этих настройках.

Вернуться на верх