Django的,服务nginx的静态文件给出了错误404

问题描述:

我无法通过nginx的静态文件和我得到404来代替。我可以看到错误(显示在error.log中),我只是看不到如何解决它。Django的,服务nginx的静态文件给出了错误404

urls.py

urlpatterns += patterns('', (
     r'^static/(?P<path>.*)$', 
     'django.views.static.serve', 
     {'document_root': 'static'} 
)) 

settings.py

STATIC_ROOT = os.path.join(PROJECT_DIR, "staticfiles/") 
STATIC_URL = '/static/' 

DEBUG=False 

(做现在collectstatic和所有静态文件都在 'staticfiles /')

nginx的配置

server { 
    listen 80; 
    server_name my_ip; 
    location = /favicon.ico { access_log off; log_not_found off; } 

    location /static/ { 
     root /home/project/project/project/staticfiles; 
    } 

    location/{ 
     include proxy_params; 
     proxy_pass http://unix:/home/project/project/project.sock; 
    } 
} 

base.html文件

{% load staticfiles %} 
<link rel="stylesheet" href="{% static '/css/main.css' %}"> 

,这是日志

error.log中

2017/04/09 10:57:40 [error] 4719#4719: *182 open() "/home/project/project/project/staticfiles/static/images/home-lock.png" failed (2: No such file or directory) 

( “静态/” 在静态URL添加我不明白为什么)

+3

我只想说的/ home /项目/工程/项目是不是一个很好的目录名。 – zmbq

+0

我知道。第一个'项目实际上是用户名。我的每个服务器的非root用户的用户名与项目相同。为什么?它是难看但在同一时间在同一屏幕上的各种终端处理时,它是不容易出错。我相信你不需要解释其他两个。 – xpanta

试试这个

location /static/ { 
    alias /home/project/project/project/staticfiles; 
} 
+0

是的。这工作。怎么样?为什么? – xpanta

+1

会帮助你http://*.com/questions/10631933/nginx-static-file-serving-confusion-with-root-alias – itzMEonTV