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

使用Puma、Nginx、Capistrano部署ROR应用到EC2无报错但访问异常

RoR部署EC2访问异常排查方案

1. 核查Nginx与Puma的对接配置

  • 对比Nginx配置文件中upstream块指向的socket路径,和Puma实际监听的socket路径(你提供的Puma监听路径为unix://nnnn/nnn/current/tmp/sockets/puma.sock)是否完全一致,排查路径拼写、软链接失效类问题。
  • 核查socket文件权限:执行ls -l <替换为实际puma.sock路径>,确认运行Nginx的用户(通常为www-data或nginx)对该socket有读写权限。若权限不足,可修改Puma配置中socket的权限参数,或将Nginx运行用户加入deployer用户组。
  • 验证Nginx配置合法性:执行sudo nginx -t确认配置语法正确后,执行sudo nginx -s reload重载配置生效。

2. 本地验证Puma服务可用性

  • 直接在EC2实例内通过socket请求Puma服务:执行curl --unix-socket <替换为实际puma.sock路径> http://localhost,若能返回应用响应则说明Puma服务正常,问题出在Nginx转发环节;若无法返回响应,需核查Puma绑定配置、Rails运行环境参数(如secret_key_base未配置导致进程假活)。
  • 核查Rails日志目录权限:确认deployer用户对current/log/目录有读写权限,避免Puma进程无法写入日志导致无请求记录。

3. 核查网络与端口规则

  • 确认EC2实例安全组的入站规则已开放你访问使用的端口(通常为80/443),允许你所在的公网IP或全IP段访问。
  • 检查EC2本地防火墙规则:执行sudo ufw status查看ufw规则,若80/443端口未开放,执行sudo ufw allow 80/tcp、sudo ufw allow 443/tcp开启端口。

4. 核对Nginx访问日志

  • 除错误日志外,查看Nginx访问日志(默认路径/var/log/nginx/access.log),确认你发起的请求是否抵达Nginx:
    • 无对应请求记录:问题出在网络链路、安全组/防火墙配置环节
    • 有502/503状态码记录:回到第一步核查Nginx到Puma的转发配置与权限
    • 有403/404状态码记录:核查Nginx配置中root参数是否正确指向Rails应用的public目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:24:02