如何处理不完整的Django / Nginx文件服务器URL?

时间:2017-03-03 15:37:58

标签: django nginx

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

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

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

https://fs01.mysite.com

......他们看到Nginx的默认&#34;欢迎来到nginx ......&#34;页。如果他们输入此网址:

https://fs01.mysite.com/media

......他们将获得Nginx&#34; 404 Not Found&#34;页。如果他们输入此网址:

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

......他们将获得Nginx&#34; 403 Forbidden&#34;页。

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

1 个答案:

答案 0 :(得分:0)

  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错误。

  4. 我认为由你来决定如何处理这些案件,只是让它们保持一致。确保您了解nginx配置以及不同请求所采用的路径。为避免403错误,您可以将空index.html文件放在该目录中。