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

Ubuntu部署Django遇Nginx-UWSGI权限拒绝502错误求助

解决Nginx连接uWSGI套接字时的权限拒绝问题

问题根源

你遇到的Permission denied不是套接字文件本身的权限问题,而是套接字所在的/root/uwsgi目录属于root专属目录,Nginx运行用户www-data默认没有访问/root目录下子目录的权限——哪怕给套接字设了666权限,父目录的权限限制会直接阻断Nginx的访问。

解决方案

1. 迁移套接字到安全的公共目录

最稳妥的做法是把套接文件放到非root专属的目录,比如/var/run/uwsgi:

  • 创建目录并赋予权限:
    mkdir -p /var/run/uwsgi
    chown www-data:www-data /var/run/uwsgi
    
  • 修改uWSGI配置文件/root/uwsgi/sites/testproject.ini:
    将socket=/root/uwsgi/testproject.sock改为:
    socket=/var/run/uwsgi/testproject.sock
    
  • 修改Nginx配置文件/etc/nginx/sites-available/testproject:
    将uwsgi_pass unix:/root/uwsgi/testproject.sock;改为:
    uwsgi_pass unix:/var/run/uwsgi/testproject.sock;
    

2. 重启服务生效

  • 停止现有uWSGI进程:
    uwsgi --stop /tmp/project-master.pid
    # 如果上面命令无效,直接杀进程:
    pkill uwsgi
    
  • 重新启动uWSGI:
    uwsgi --ini /root/uwsgi/sites/testproject.ini
    
  • 重启Nginx:
    systemctl restart nginx
    

不推荐的临时验证方法(仅用于排查)

如果不想迁移目录,可以临时给/root目录添加其他用户的执行权限(会降低root目录安全性,不建议长期使用):

chmod o+x /root

执行后重启Nginx和uWSGI即可验证,但后续建议还是迁移到公共目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:31:12