我有一个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中处理这些情况?
答案 0 :(得分:0)
他们看到欢迎页面,因为nginx匹配默认的vhost条目而不是你的。您应该删除默认值(/etc/nginx/conf.d/default
或/etc/nginx/sites-enabled/default
,具体取决于您使用的Linux发行版),并确保server_name
行与您的URL匹配(即末尾没有斜杠)。
看起来您的location
块仅匹配media/
(末尾带有斜线)。这就是为什么你得到404错误 - 它匹配不同的location
块并且可能由Django处理。
您不能列出目录,因此您会收到Forbidden错误。
我认为由你来决定如何处理这些案件,只是让它们保持一致。确保您了解nginx配置以及不同请求所采用的路径。为避免403错误,您可以将空index.html
文件放在该目录中。