Nginx没有为Amazon EC2中的Django提供静态文件 - 404错误

问题描述 投票:0回答:2

我是Django开发和Nginx配置的新手。一旦使用gunicorn和Nginx在amazon EC2中部署应用程序,页面加载时不会出现静态文件(css,js等)。

我怀疑Nginx无法加载静态文件。我花了几个小时试图调整Nginx配置,并阅读其他答案,但仍然没有运气。

任何正确方向的提示都表示赞赏。

在/ etc / nginx的/网站可用/ SBS

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

        location /static/ {
            autoindex on;
            root /home/ubuntu/secure-banking-system/sbs/static/;
        }
        location / {
            include proxy_params;
            proxy_pass http://unix:/home/ubuntu/secure-banking-system/sbs/sbs.sock;
        }
}

settings.朋友

STATIC_ROOT = '/home/ubuntu/secure-banking-system/sbs/static'

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'sbs/static')
]

我已经验证了静态文件在/home/ubuntu/secure-banking-system/sbs/static/中可用

文件结构

secure-banking-system
|
|──sbs
   |
   |────│ 
        │   
        ├── sbs
        │   |
        │   └── static
        │       ├── css
        │       ├── images
        │       └── js
        |
        ├── static
            ├── css
            ├── images
            └── js
django nginx amazon-ec2 gunicorn static-files
2个回答
1
投票

root指令不会从请求中删除/static部分。所以请求

http://my_server_hos/static/foo/test.png

会让nginx寻找一个文件

/home/ubuntu/secure-banking-system/sbs/static/static/foo/test.png


了解这一点,/static位置的配置应该是:

       location /static {
            autoindex on;
            root /home/ubuntu/secure-banking-system/sbs;
       }

另一种方法是使用alias指令:

       location /static {
            autoindex on;
            alias /home/ubuntu/secure-banking-system/sbs/static;
       }

1
投票

这最终对我有用。我还清除了Python缓存文件和* .pyc,因为我在settings.py中的更改没有反映出来。

在/ etc / nginx的/网站可用/ SBS

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

    location /static/ {
        alias /home/ubuntu/secure-banking-system/sbs/static/;
    }
location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/secure-banking-system/sbs/sbs.sock;
    }
}

settings.朋友

STATIC_ROOT = os.path.join(BASE_DIR, 'sbs/static/')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'sbs/static/')
]
© www.soinside.com 2019 - 2024. All rights reserved.