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 предоставляет более подробную информацию об этих настройках.