Nginx为django静态文件提供403代码

Nginx为django静态文件提供403代码,django,nginx,Django,Nginx,我正在尝试部署我的django项目。在my django设置中,静态文件设置如下所示: STATIC_URL = '/static/' STATIC_ROOT = '/root/www/static' server{ listen 80; location /static/ { root /root/www; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host

我正在尝试部署我的django项目。在my django设置中,静态文件设置如下所示:

STATIC_URL = '/static/'
STATIC_ROOT = '/root/www/static'
server{
   listen 80;
   location /static/ {
   root /root/www;
   }

   location / {
   proxy_pass http://127.0.0.1:8000;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}
location /static {
        alias /home/ubuntu/srv/webapps/[app_name]/static;
    }
因此,我的静态文件位于/root/www/static目录中,我可以在服务器中看到它们。我的nginx服务器块如下所示:

STATIC_URL = '/static/'
STATIC_ROOT = '/root/www/static'
server{
   listen 80;
   location /static/ {
   root /root/www;
   }

   location / {
   proxy_pass http://127.0.0.1:8000;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}
location /static {
        alias /home/ubuntu/srv/webapps/[app_name]/static;
    }
当我用浏览器浏览我的应用程序时,我得到

403-禁止


静态文件错误

您不应该将静态文件置于
/root
下:这仅适用于通过root用户访问的文件。

问题似乎在于用户权限。您需要更改为其部署应用程序的用户可访问的路径

位置应如下所示:

STATIC_URL = '/static/'
STATIC_ROOT = '/root/www/static'
server{
   listen 80;
   location /static/ {
   root /root/www;
   }

   location / {
   proxy_pass http://127.0.0.1:8000;
   proxy_set_header Host $host;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}
location /static {
        alias /home/ubuntu/srv/webapps/[app_name]/static;
    }

请尝试教程获取更多帮助。

为什么要将它们放在“/root”下?这只适用于root用户可以访问的文件。@DanielRoseman,没有特殊原因。我只是想试试。将它们从根目录中移动并更改了设置。现在好了。将此作为答案发布,以便我可以接受^^