Django Prevent 每个人都可以看到 /media 文件

Django Prevent that everyone can see /media Files

在我的 nginx 服务器上,如果人们使用 /media 路径,他们可以看到包含每个文件的整个文件夹的列表。我怎样才能阻止人们看到它,就像 404 页面一样。但我一般不能禁用它,因为我在其他页面上引用了带有图像和内容的路径。所以总而言之,我需要为用户禁用 /media 路径,而不是为服务器本身禁用。

我正在使用 django。

您好,感谢您的帮助

我认为您刚刚偶然发现了 Django 中的一个常见问题。对我来说,有几种解决方案,但解决方案可能会出现问题:

  • 您可以通过 nginx 和 django 禁用静态媒体文件服务,并编写检查每个文件模式某些条件的路由。这给了你很大的灵活性(你可以在 Django 中做任何事情),但是你的性能会更差,因为 Django 需要发送文件而不是 Nginx
  • 我认为有一个解决方案(之前从未测试过)仅通过 NGINX 内部后端提供媒体文件,然后让 Django 进行检查,然后在内部重定向到 NGINX 将提供的相应文件

编辑: 我认为这个答案解释了后者

我怀疑您的 nginx 配置了 autoindex on,它将为所请求的路径生成完整的目录列表。在为您的网站提供静态内容时,您通常会希望禁用 autoindex.

Nginx docs 提供有关这些设置的更多详细信息。