繁体   English   中英

绕过Django以使用Nginx提供静态文件

[英]Bypass Django to serve static files with Nginx

我正在尝试使用Nginx提供静态文件,但是Django似乎控制了路径并不断提供404,因为它不是Django应用中的有效URL。

这是Nginx服务器设置:

server {
    listen       443;
    server_name  localhost;

    client_max_body_size 500M;

    location /static/ {
        autoindex on;
        root /app/interfaces/web/static;
    }

    location / {
        uwsgi_pass django;
        include /app/interfaces/web/django/uwsgi_params;
    }
}

我已经尝试了以下所有组合:

  • /static//static
  • autoindex on和不autoindex on
  • rootalias

当我尝试访问/ static /目录中的文件时,我从Django收到以下404错误:

找不到页面(404)

请求方法:GET请求

网址: https//172.16.6.158/static/test.css

Django使用django.urls中定义的URLconf,按以下顺序尝试了以下URL模式:

^ ^ $ [name ='index']

^ history /

^ config /

^ admin /

当前路径static / test.css与任何这些都不匹配。

我也尝试在Django设置中设置STATIC_URL ,但我认为这不是必需的,因为我正尝试绕过Django。 无论如何,它没有任何区别。

有人知道我在做什么错吗? 我是否需要在其他地方更改配置。

更新

Nginx访问日志给出以下错误:

172.16.6.108--[11 / Dec / 2017:11:53:11 +0000]“ GET /static/test.css HTTP / 1.1” 404 3132“-”“ Mozilla / 5.0(Windows NT 6.1; Win64; x64) AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 61.0.3163.100 Safari / 537.36“”-“

错误日志中没有任何内容。

使用的设置:

location /static/ {
    alias /app/interfaces/web/static;
}

将此代码放入服务器块中

# Django media location 
 location  /media { alias /home/username/djangoproject/media; }

 location /static { alias /home/username/djangoproject/app/static;}
 # your Django project's static files `

并且您还需要将静态网址和媒体网址添加到urlpattern .google中,以便在Django中提供静态文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM