绕过Django使用Nginx

时间:2017-12-12 10:37:35

标签: django 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
  • rootalias

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

  

找不到页面(404)

     

请求方法:GET请求

     

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

     

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

     

^ ^ $ [name ='index']

     

^ history /

     

^配置/

     

^ 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;
}

1 个答案:

答案 0 :(得分:2)

将此代码放在服务器块

# 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中提供静态文件