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

Kamal部署Rails生产环境后无法访问的问题排查求助

Kamal部署Rails应用成功但无法访问的排查方案

1. 基础网络连通性排查

  • 本地执行ping 139.144.161.121,确认服务器IP是否可达。若不通,检查服务器防火墙、NodeBalancer的入站规则,确保80/443端口对外开放。
  • 用nc -zv 139.144.161.121 80和nc -zv 139.144.161.121 443测试端口是否开放,排查端口被阻断问题。
  • 执行nslookup www.theaddress.com或dig www.theaddress.com,验证域名解析是否指向正确的NodeBalancer IP 139.144.161.121。

2. NodeBalancer配置验证

  • 登录NodeBalancer管理后台:
    • 确认监听端口(80/443)已配置,且转发到后端服务器的80/443端口(Kamal默认通过Traefik监听主机80/443)。
    • 检查后端服务器的健康状态,若显示“不健康”,调整健康检查规则(比如检查路径设为/或应用的健康端点,端口匹配Traefik监听端口)。
    • 确认负载均衡策略配置正确,流量能正常分发到后端服务器。

3. 服务器端Traefik与容器检查

  • 登录部署服务器,执行docker ps | grep traefik,确认Traefik容器处于Up状态。
  • 查看Traefik日志:docker logs traefik,排查是否有证书生成失败、路由配置错误等日志。
  • 检查Traefik动态路由配置:docker exec traefik cat /etc/traefik/dynamic/<你的应用配置文件>,确认域名www.theaddress.com已正确注册到路由规则中。
  • 执行docker ps | grep <你的应用名称>,确认应用容器正常运行,无频繁重启(重启次数过多说明应用启动失败)。

4. 应用容器与内部状态排查

  • 查看应用容器日志:docker logs <应用容器ID>,重点排查启动错误、数据库连接失败、环境变量缺失等问题。
  • 在服务器本地直接访问应用端口:curl http://localhost:3000(默认Rails端口),确认应用本身能正常响应请求。
  • 检查容器端口映射:docker inspect <应用容器ID> | grep Ports,确认容器端口(如3000)已正确暴露,且Traefik能通过Docker标签发现该服务。

5. Deploy.yml配置校验

  • 确认service区块:
    • domain字段是否为www.theaddress.com
    • port是否匹配Rails应用监听端口(默认3000)
    • Traefik相关配置是否启用HTTPS,若使用Let's Encrypt,确保服务器能访问ACME验证端点
  • 检查servers区块的服务器IP是否为NodeBalancer后端的真实服务器地址
  • 核对env区块的环境变量,确保RAILS_ENV=production、数据库连接字符串等关键配置正确无误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:52:18