【问题标题】:How to Handle Incomplete Django/Nginx File Server URLs?如何处理不完整的 Django/Nginx 文件服务器 URL?
【发布时间】:2017-03-03 15:37:58
【问题描述】:

我有一个 Django 网站,它在单独的文件服务器上使用 Nginx 来提供用户上传的图像。当任何用户查看其他用户的照片时,该照片的链接将具有以下结构:

https://fs01.mysite.com/media/photos/<username>_<photo-id>.jpg

当页面被渲染时,用户的照片由文件服务器 (fs) 提供。但是 Nginx 处理对上述 URL 的子目录的不完整(也可以说不正确)请求的方式是什么?例如,如果用户输入此 URL:

https://fs01.mysite.com

...他们看到 Nginx 的默认“Welcome to nginx on ...”页面。如果他们输入此 URL:

https://fs01.mysite.com/media

...他们将获得 Nginx “404 Not Found”页面。如果他们输入这个 URL:

https://fs01.mysite.com/media/photos

...他们将获得 Nginx “403 Forbidden”页面。

你如何在 Nginx 中处理这些情况?

【问题讨论】:

    标签: django nginx


    【解决方案1】:
    1. 他们看到欢迎页面,因为 nginx 匹配默认 vhost 条目而不是您的。您可能应该删除默认的(/etc/nginx/conf.d/default/etc/nginx/sites-enabled/default,取决于您使用的 linux 发行版)并确保 server_name 行与您的 url 匹配(即末尾没有斜杠)。

      李>
    2. 看起来您的 location 块仅匹配 media/(末尾带有斜线)。这就是你得到 404 错误的原因 - 它匹配不同的 location 块并且可能由 Django 处理。

    3. 你不能列出目录,所以你得到了 Forbidden 错误。

    我认为如何处理此类情况取决于您,只要使它们保持一致即可。确保您了解 nginx 配置以及不同请求所采用的路径。为避免 403 错误,您可以将空的 index.html 文件放在该目录中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 2014-01-13
      • 2021-11-29
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      相关资源
      最近更新 更多