You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用uWSGI+Nginx部署Django遇权限错误及502问题求助

解决uWSGI+Nginx部署Django时的502权限问题

这问题我之前部署Django时也踩过坑,核心原因就是Nginx进程没有权限访问uWSGI创建的Unix socket文件——毕竟你直接用uWSGI的http模式能正常跑起来,说明Django和uWSGI本身的配置没毛病,就是socket的权限卡壳了。

先看你Nginx日志里的connect() to unix:///var/... (13: Permission denied),直接指向了权限问题,给你几个靠谱的解决办法:

  • 调整socket的权限与归属
    打开你的myproject.ini,添加或修改这两项配置,让socket文件允许Nginx的运行用户访问:

    chmod-socket = 664
    chown-socket = www-data:www-data
    

    注意:如果你的系统里Nginx是用nginx用户运行的,就把上面的www-data换成nginx。改完之后重启uWSGI就行。

  • 给socket单独建个目录(更稳妥)
    有些系统里/var/run/这类目录的默认权限很严,Nginx用户可能连访问目录的权限都没有。可以专门给uWSGI的socket建个目录:

    sudo mkdir /var/run/uwsgi/
    sudo chown www-data:www-data /var/run/uwsgi/
    

    然后把myproject.ini里的socket路径改成/var/run/uwsgi/myproject.sock,同时Nginx配置里的uwsgi_pass也要对应改成这个路径。

  • 临时验证(别长期用)
    要是你想快速确认是不是权限问题,可以先给socket加全局读写权限:

    sudo chmod 777 /var/.../your-socket-file.sock
    

    这时候再访问网站,如果502消失了,就实锤是权限问题,赶紧换回前面更安全的664权限配置。

最后别忘了重启uWSGI和Nginx让配置生效:

sudo systemctl restart uwsgi
sudo systemctl restart nginx

内容的提问来源于stack exchange,提问作者DoTheGenes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:19:52