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

Gunicorn与Nginx连接上游时权限被拒问题及Django站点配置咨询

解决Gunicorn+Nginx搭建Django站点时的「Permission denied while connecting to upstream」权限问题

嘿,这个权限报错我熟得很!咱们对着你给的配置一步步来排查解决:

一、先搞定目录与Socket文件的访问权限

你看,Nginx是以nginx用户运行的,而Gunicorn的socket文件存在/home/username/my_project/下面,首先得确保nginx能进到这个目录,还能读/写这个socket:

  • 先给项目目录加执行权限(让nginx能进入目录):
    chmod 710 /home/username/my_project
    
  • 然后,Gunicorn默认创建的socket权限是600,只有它自己的用户能访问。咱们在启动命令里加个--umask 0007,让socket权限变成660,这样同组的nginx用户就能访问了。修改你的Gunicorn服务配置里的ExecStart行:
    ExecStart=/home/username/my_project/bin/gunicorn --access-logfile - --workers 3 --umask 0007 --bind unix:/home/username/my_project/my_project.sock my_project.wsgi:application
    
  • 改完后重启Gunicorn让配置生效:
    sudo systemctl restart gunicorn
    

二、排查SELinux的限制(CentOS/RHEL系统大概率会碰到)

有时候目录和文件权限都对了,还是报错,那十有八九是SELinux在搞事情。咱们先临时关了它测试下:

sudo setenforce 0

如果这时候错误消失了,说明就是SELinux的问题。别慌,不用一直关着它,给咱们的socket加个安全上下文规则就行:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/home/username/my_project/my_project.sock"
sudo restorecon -v "/home/username/my_project/my_project.sock"

加完规则再把SELinux开回去:

sudo setenforce 1

三、最后验证一下

重启Nginx服务:

sudo systemctl restart nginx

然后看看Nginx的错误日志,确认权限问题是不是解决了:

sudo tail -f /var/log/nginx/error.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:38:02