繁体   English   中英

403 禁止:Nginx 不在 Django 管理面板中提供静态信息

[英]403 Forbidden: Nginx not serving statics in Django Admin panel

设置.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DEBUG = True
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'adminstatic')

mynginx.conf /etc/nginx/sites-enabled/mynginx.conf你可以确定我在sites-enabled文件夹中只有这个conf文件

server {
    listen                *:80;
    server_name           _;
    access_log            /var/log/myapp.access.log;
    error_log             /var/log/myapp.error.log;

    # Django media

   location /static/ {
     alias /root/proj/myapp/adminstatic/; #your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass    unix:/tmp/myapp.sock;
        include     /etc/nginx/uwsgi_params; # the uwsgi_params file you installed
    }

}

在此之后,我尝试了 collectstatic 命令python manage.py collectstatic它已成功收集了 adminstatic 文件夹中的所有静态数据。我交叉检查,在 adminstatic 文件夹中有一个名为admin的文件夹。 这个 admin 文件夹有 3 个文件夹,名为cssimgjs

所有这些都是我在生产机器上做的。 因此,当我尝试通过生产的 ip 访问本地浏览器上的 django 管理页面时,管理面板正在打开但加载了任何 css/js。 我做了 F12 并在网络选项卡中看到。 所有静态都存在禁止错误。

PS:我将 uWsgi 与 nginx 一起使用。

和往常一样,我已经看过一些 SO 主题和博客。 但这对我没有帮助。

nginx web 进程用户(通常是www-data )可能没有/root/proj/myapp/adminstatic/读取权限。 我想如果您检查myapp.error.log您会看到权限被拒绝的消息。

您需要将您的项目移动到 nginx 进程有权读取的文件夹中(您真的不应该从/root提供这些东西),或者您可以chown / chmod /root/proj/myapp/adminstatic/适当地给予访问www-data

我将静态文件移动到 /data/www 并且它起作用了。

将您的项目移动到/var/www/html/然后运行sudo chown -R www-data:www-data project-directory/记得在/etc/systemd/system/gunicorn.service/etc/nginx/sites-available/your-project.conf上编辑您的配置/etc/nginx/sites-available/your-project.conf到新位置。

然后运行

sudo systemctl daemon-reload, 
sudo systemctl restart gunicorn, 
sudo systemctl restart nginx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM