Nginx为django静态文件提供403代码
我正在尝试部署我的django项目。在my django设置中,静态文件设置如下所示: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
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,没有特殊原因。我只是想试试。将它们从根目录中移动并更改了设置。现在好了。将此作为答案发布,以便我可以接受^^