2017-03-03 57 views
0

我有一个Django网站,它在单独的文件服务器上使用Nginx来提供我的用户上传的图像。当任何用户查看其他用户的照片,链接到的照片都会有这样的结构:如何处理不完整的Django/Nginx文件服务器URL?

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

当页面呈现,用户的照片是由文件服务器(FS)担任了。但是,对于上面的URL的子目录,Nginx处理不完整的方式(也可以说不正确)的方式是什么?例如,如果用户输入此URL:

https://fs01.mysite.com 

...他们看到Nginx的默认“欢迎使用nginx on ...”页面。如果他们输入这个网址:

https://fs01.mysite.com/media 

......他们会得到Nginx的“404 Not Found”页面。如果他们输入这个网址:

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

......他们会得到Nginx的“403 Forbidden”页面。

你如何处理Nginx的这些情况?

回答

0
  1. 他们看到欢迎页面,因为nginx匹配默认虚拟主机条目而不是你的。您应该删除默认的(/etc/nginx/conf.d/default/etc/nginx/sites-enabled/default,具体取决于您使用的Linux发行版),并确保server_name行与您的url匹配(即末尾没有斜杠)。

  2. 看起来像你的location block matckes只有media/(与最后的斜线)。这就是为什么你得到404错误 - 它匹配不同的location块,并可能由Django处理。

  3. 您不能列出目录,因此您会收到Forbidden错误。

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

相关问题