django – nginx不提供管理静态文件?

前端之家收集整理的这篇文章主要介绍了django – nginx不提供管理静态文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

澄清:以下错误仅适用于管理静态文件,即它特定于与Django管理员对应的静态文件.其余的静态文件完美运行.

问题

基本上,我无法使用ngix服务器访问管理静态文件.

它确实与Django的微服务器一起工作,并且collectstatic正在完成它的工作,这意味着它将文件放在静态文件夹中的预期位置.

网址是正确的,但我不能直接访问管理静态文件,但我可以访问其他人.所以,例如:

>我可以访问此URL(在浏览器中复制它):
myserver.com:8080/static/css/base/base.css
>但我无法访问此其他网址(在浏览器中复制):
myserver.com:8080/static/admin/css/admin.css

我试过了什么?

如果我将admin /目录结构复制到__other_admin_directory_name / __,然后我访问它确实有效
myserver.com:8080/static/__other_admin_directory_name__/css/admin.css

此外,

>我检查了权限,一切都很好.
>我尝试将ADMIN_MEDIA_PREFIX =’/ static / admin /’更改为ADMIN_MEDIA_PREFIX =’/ static / other_admin_directory_name /’,它不起作用.

最后,它似乎是一个重要的线索:

我试图将admin /目录结构复制到__admin_and_then_any_suffix / __中.然后我无法访问
myserver.com:8080/static/__admin_and_then_any_suffix/__/css/admin.css.因此,如果目录的名称以admin开头(例如管理或admin2),则它不起作用.

编辑 – 感谢@sarnold观察:

问题似乎是在Nginx配置文件/ etc / Nginx / sites-available / mysite中

location /static/admin {
   alias /home/vl3/.virtualenvs/vl3/lib/python2.7/site-packages/django/contrib/admin/media/;
}
最佳答案
我的建议:

>使用django 1.3(和ADMIN_MEDIA_PREFIX is deprecated now)
>在settings.py中设置STATIC_URL and STATIC_ROOT
>在Nginx conf中定义一个静态条目(带有斜杠).不需要第二个解决static / admin /的问题:

location /static/  {
        alias /path/to/static/;
}

>使用应该收集管理员的collectstatic – >静态/管理员.它将与所有其他收集的静态媒体位于同一位置.

python manage.py collectstatic

猜你在找的Nginx相关文章