django + nginx部署没有正确加载静态文件

时间:2017-07-03 13:31:43

标签: python django reactjs nginx wsgi

    server {
    listen 80;
    server_name 13.xx.xx.xxx;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/ubuntu/studykarma/django-react-redux-base/src/;
    }
    location / {
        include proxy_params;
        include  /etc/nginx/mime.types;
        proxy_pass http://unix:/home/ubuntu/studykarma/django-react-redux-base/src/djangoreactredux.sock;
    }
}

我的nginx配置文件

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static_dist'),
)

我的settings.py

我的静态文件在static_dist文件夹中,而我的reactjs代码是静态的 文件夹中。

我的静态文件没有加载并给我404, 如果我将路径更改为/ static_dist /,那么我也会得到空的内容。

我正在使用此模板:https://github.com/Seedstars/django-react-redux-base

2 个答案:

答案 0 :(得分:2)

关于Nginx配置

location /static/ {
        root /home/ubuntu/studykarma/django-react-redux-base/src/;
 }

这个配置告诉Nginx在访问例如example.com/static/app.js时,查看src文件夹root内的app.js文件,如果你想要static_dist,那么配置更改

location /static/{
   root /home/ubuntu/studykarma/django-react-redux-base/src/path/to/static_dist/;
}

关于Django配置

您的Django设置在逻辑上是错误的,

STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')

以上设置告诉django您期望从STATICFILES_DIRSSTATIC_ROOT的所有静态文件,当您使用collectstatic django manage命令时,django的配置有效/使用,这会影响副本您从STATICFILES_DIRSSTATIC_ROOT的所有文件(但这也意味着,您必须将/static/位置nginx配置指向static_root而不是static_dist

答案 1 :(得分:1)

使用此,

location /static_root/ { root /home/ubuntu/studykarma/django-react-redux-base/src/static_r‌​oot/; }

它会起作用