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

Route 53绑定ALB后无法访问EC2上的Rails应用问题排查求助

问题根因

最核心的问题是Nginx站点配置的server_name不匹配,且存在语法错误:

  • 你当前ruby_gems_bootcamp.conf里的server_name仅配置了旧EC2公网IP,未添加你绑定的自定义域名,通过域名访问时请求会命中Nginx默认服务块,无法正确转发到Rails应用
  • 配置中server_name 54.248.194.243行末尾缺失分号,属于Nginx语法错误,可能导致配置未生效

其他潜在问题:

  • ALB绑定的ACM证书未覆盖你的自定义域名,导致HTTPS访问报错
  • DNS缓存未更新,域名仍解析到旧EC2IP而非ALB
  • Rails未信任ALB的转发头,开启强制HTTPS后出现重定向循环

修复步骤

  1. 修改Nginx站点配置ruby_gems_bootcamp.conf:
# 将原来的server_name行替换为以下内容,替换为你实际使用的自定义域名,末尾补加分号
server_name 你的自定义域名 54.248.194.243;

# 在location @app块中添加X-Forwarded-Proto头配置,完整块如下
location @app {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_pass http://app_server;
}
  1. 验证Nginx配置语法并重载服务:
# 检查配置语法是否正确
nginx -t
# 重载Nginx使配置生效
systemctl reload nginx
  1. 验证ALB证书配置:确认HTTPS监听器绑定的ACM证书已包含你使用的自定义域名,证书域名不匹配会直接导致HTTPS访问报错
  2. 验证DNS解析:本地执行nslookup 你的自定义域名,确认返回的IP属于ALB的IP段,若仍解析到旧EC2IP,可等待DNS TTL到期后测试,或清理本地DNS缓存
  3. 配置Rails信任代理:若Rails生产环境开启了config.force_ssl = true,需在config/environments/production.rb中添加ALB的IP段到信任代理列表,避免无限重定向:
config.action_dispatch.trusted_proxies = /^10\./ # 匹配AWS VPC默认内网段,可根据你的实际VPC网段调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:21:03