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

NGINX无法连接GUNICORN Socket权限问题求助

解决Debian 12下Flask+Gunicorn+Nginx的502 Bad Gateway权限问题

核心问题定位

从Nginx错误日志的connect() to unix:/home/admin/my_app/app.sock failed(13: Permission denied)可以看出,www-data用户无法访问socket文件所在的目录链。即使socket本身权限设为777,但admin用户的家目录默认权限通常是700,会阻止www-data用户进入该目录。

分步解决

1. 调整admin家目录权限

给www-data组添加进入admin家目录的权限:

chmod g+x /home/admin
# 或者更严格的权限设置,仅开放给admin用户和www-data组
chmod 710 /home/admin

2. 确保应用目录权限正确

让www-data组能读取并进入my_app目录:

chmod g+rx /home/admin/my_app

3. 重启服务生效

重启Gunicorn和Nginx服务:

sudo systemctl restart myapp.service
sudo systemctl restart nginx

备选方案:将socket移到系统临时目录

如果上述方法仍无效,可以将socket文件放到系统级的临时目录(如/run),避免家目录权限限制:

  1. 创建socket目录:
sudo mkdir -p /run/my_app
sudo chown admin:www-data /run/my_app
  1. 修改Gunicorn的systemd配置(/etc/systemd/system/myapp.service):
    将ExecStart中的--bind=unix:app.sock改为:
ExecStart=/home/admin/my_app/venv/bin/gunicorn --workers=2 --bind=unix:/run/my_app/app.sock -m 777 main:app
  1. 修改Nginx配置(sites-available中的对应文件):
    将proxy_pass改为:
proxy_pass http://unix:/run/my_app/app.sock;
  1. 重新加载systemd配置并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart myapp.service
sudo systemctl restart nginx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:57:39