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

求助:已启动Puma集群但Nginx无法反向代理部署的应用

排查Nginx无法转发请求到Puma的问题

看你给出的信息,Puma确实已经以cluster模式正常启动了,socket路径也和Nginx配置里的对上了,咱们一步步来排查可能的问题:

1. 检查Unix Socket的权限

Puma的socket文件/var/www/womaclub.com/shared/tmp/sockets/puma.sock是由superad+用户创建的,但Nginx通常是以www-data(Debian/Ubuntu)或者nginx(RHEL/CentOS)用户运行的。如果Nginx没有读写这个socket的权限,自然没法建立连接。

先执行命令查看socket的权限详情:

ls -l /var/www/womaclub.com/shared/tmp/sockets/puma.sock

解决办法二选一即可:

  • 启动Puma时添加--umask 0002参数,让socket文件对同组用户开放读写权限
  • 把Nginx用户加入到superad+的用户组,然后重启Nginx:
    usermod -aG superad+ www-data
    systemctl restart nginx
    

2. 修正Nginx的proxy_pass协议

你的upstream定义的是Unix socket,但proxy_pass用了https://puma,这是错误的!Nginx和Puma是本地通信,不需要HTTPS加密,改成http://puma就行:

location @puma {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://puma; # 这里改成http协议
}

HTTPS的终止已经在Nginx层面完成了,后端用HTTP通信完全足够,用HTTPS反而会导致连接失败。

3. 查看Nginx错误日志找具体原因

你已经配置了错误日志路径/var/www/womaclub.com/shared/log/puma_error.log,直接查看日志里的报错信息是最直接的排查方式:

tail -f /var/www/womaclub.com/shared/log/puma_error.log

日志里大概率会明确提示是权限拒绝、连接失败还是其他问题,能帮你快速定位根源。

4. 验证Nginx配置语法并重启

每次修改配置后,一定要先验证语法是否正确,再重启服务:

nginx -t
systemctl restart nginx

如果语法有问题,Nginx会直接提示错误行号和具体原因,先把语法问题解决掉。

5. 检查SELinux(针对RHEL/CentOS系列系统)

如果你的服务器是CentOS或者RHEL,SELinux可能会阻止Nginx访问Puma的socket文件。可以先临时关闭SELinux测试:

setenforce 0

如果关闭后问题解决了,就添加SELinux规则来允许Nginx访问该路径:

semanage fcontext -a -t httpd_unix_stream_socket_t "/var/www/womaclub.com/shared/tmp/sockets/puma.sock"
restorecon -v "/var/www/womaclub.com/shared/tmp/sockets/puma.sock"

先从这几个方向排查,应该能解决大部分问题。如果还是不行,可以把Nginx错误日志里的具体内容贴出来,咱们再进一步分析。

内容的提问来源于stack exchange,提问作者Sebastián Landínez García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:38:08