我正在尝试使用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
root
和alias
当我尝试访问/ 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;
}
答案 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中提供静态文件