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

Gunicorn服务正常但Nginx无法连接Unix套接字权限问题求助

解决Nginx无法连接Unix套接字及50x.html缺失问题

一、Unix套接字权限拒绝的核心原因及修复

你遇到的13: Permission denied错误,根本原因不是套接字本身的权限,而是套接字所在的/root/chatleads-nlu/目录权限限制——默认情况下,/root目录的权限是drwx------,只有root用户能访问,而Nginx的worker进程是以www-data用户运行的,所以即使套接字给了www-data组权限,Nginx也没法进入/root目录读取套接字。

修复步骤:

  1. 将套接字移到非root专属目录,推荐放在/var/run/chatleads-nlu/(这是Unix系统存放运行时套接字的标准目录):
    • 先创建目录并设置正确权限:
      sudo mkdir -p /var/run/chatleads-nlu/
      sudo chown root:www-data /var/run/chatleads-nlu/
      sudo chmod 750 /var/run/chatleads-nlu/
      
    • 修改你的Gunicorn启动命令(或systemd服务文件里的ExecStart行),让它将套接字生成到这个新目录,比如:
      gunicorn --workers=3 --bind unix:/var/run/chatleads-nlu/chatleads-nlu.sock wsgi:app
      
  2. 更新Nginx站点配置,把proxy_pass的路径改成新的套接字路径:
    proxy_pass http://unix:/var/run/chatleads-nlu/chatleads-nlu.sock;
    
  3. 重启相关服务使配置生效:
    sudo systemctl daemon-reload
    sudo systemctl restart chatleads-nlu
    sudo systemctl restart nginx
    

二、修复/usr/share/nginx/html/50x.html缺失错误

这个错误是因为Nginx找不到默认的50系列错误页面,有两种解决方法:

方法1:创建缺失的50x.html文件

sudo touch /usr/share/nginx/html/50x.html
sudo chown www-data:www-data /usr/share/nginx/html/50x.html

你可以编辑这个文件添加自定义错误提示,比如:

<!DOCTYPE html>
<html>
<head>
    <title>Server Error</title>
</head>
<body>
    <h1>500/502/503/504 Server Error</h1>
    <p>We're sorry, something went wrong on our end.</p>
</body>
</html>

方法2:移除Nginx配置中对50x.html的引用(不推荐)

如果不需要默认错误页,可以注释或删除Nginx配置里的以下内容:

# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
#     root /usr/share/nginx/html;
# }

额外优化建议

  • 不要用root用户运行Gunicorn,建议创建一个专用应用用户(比如chatleads),在systemd服务文件里添加:
    User=chatleads
    Group=www-data
    
    同时确保应用目录的权限对该用户开放,这样更符合安全规范。
  • 检查/var/log/nginx/access.log日志,看看是否有其他关联错误,帮助进一步排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:57:29