Django + nginx + gunicorn 无法提供静态文件

Django + nginx + gunicorn not being able to serve static files

我正在尝试在 EC2 实例中部署一个 django 应用程序,但我目前在提供该应用程序的静态文件时遇到问题。

目前,我的 nginx 的 conf 文件如下所示:

# Default server configuration
#
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location / {
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass http://0.0.0.0:8000;
        }


        location /static/ {
                #autoindex on;
                root /home/ubuntu/some/folder/static/;
        }
}

同样在我的 django 项目的 settings.py 文件中,我有以下与我的静态文件相关的配置:

STATIC_URL = '/static/'
STATIC_ROOT = '/home/ubuntu/some/folder/static/'

还有 Gunicorn,我按如下方式启动它:

gunicorn3 --bind 0.0.0.0:8000 myproject.wsgi:application

然后,如果我访问 http://ec2-my-instance,我会看到 html 内容,但我所有的 js 和 css 文件都会出现错误 404。

我有点迷路了,我不知道我缺少什么让它工作,我已经迁移了静态内容并且我检查了 nginx 正在寻找静态文件的文件夹,但是如果我检查了浏览器的控制台,我看到了这种错误:

GET http://ec2-my-instance/static/somefile.js net::ERR_ABORTED 404 (Not Found)

你想要 'alias' 而不是 'root':

location /static/ {
    alias /home/ubuntu/some/folder/static/;
}