部署到阿里云ECS的Ruby on Rails项目公网IP访问连接超时如何解决
排查方案
你遇到的现象说明ICMP协议公网通信正常,问题出在TCP 80端口的公网入站请求被拦截,按以下优先级排查即可:
- 检查阿里云ECS安全组配置
进入阿里云ECS控制台,找到对应实例关联的安全组,在入方向规则中确认已经放行TCP 80端口,源地址设置为0.0.0.0/0(无特定访问源限制的场景下)。这是阿里云ECS部署最常见的问题,安全组默认不会开放80、443等业务端口。 - 检查ECS系统内部防火墙规则
根据你使用的操作系统执行对应命令校验:- CentOS/RHEL 系:执行
firewall-cmd --list-all查看已放行规则,若80端口不在列表中,执行firewall-cmd --add-port=80/tcp --permanent && firewall-cmd --reload添加放行规则。 - Ubuntu/Debian 系:执行
ufw status查看防火墙状态,若80端口未允许入站,执行ufw allow 80/tcp添加放行规则。
- CentOS/RHEL 系:执行
- 确认Nginx运行状态与端口监听配置
执行ss -tulnp | grep nginx查看Nginx端口监听记录,确认存在0.0.0.0:80的监听项,而非仅监听127.0.0.1:80。
先执行nginx -t测试配置语法是否合法,确认返回success后执行nginx -s reload重载配置,保证你给出的配置已生效。 - 排查运营商端口封禁问题
以上配置都确认无误后,先在ECS本地执行telnet 47.254.214.231 80测试本地对公网IP的80端口访问是否正常,再在外网设备执行同样的telnet命令,如果本地通、外网不通,说明80端口被运营商拦截。国内云服务器提供公网HTTP服务需要先完成ICP备案,未备案的实例80、443端口会被默认拦截。
内容的提问来源于stack exchange,提问作者Kevin Jayden Wivano
相关产品推荐
相关产品推荐

