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

配置Route 53、ACM与GoDaddy后,AWS EC2上Spring Boot的HTTPS访问错误

问题分析与解决方案

核心问题

报错Error: connect ECONNREFUSED 13.49.000.000:443说明目标EC2实例的443端口无服务监听,或流量被拦截。结合你的配置,关键遗漏点是AWS ACM证书无法直接部署到EC2实例——ACM证书仅支持绑定到AWS托管服务(如ALB、CloudFront),不能直接下载到EC2使用;同时你的Spring Boot应用默认监听8080端口,未配置443端口的HTTPS服务。

排查验证步骤

  1. 检查EC2的443端口监听状态
    登录EC2实例,执行命令确认是否有服务监听443端口:

    ss -tulpn | grep 443
    

    若无输出,说明无服务在443端口监听,这是根本原因。

  2. 验证EC2本地防火墙规则
    检查iptables是否阻止了443端口:

    sudo iptables -L -n | grep 443
    

    若存在REJECT规则,需删除并放行443端口。

解决方案

方案一:使用Application Load Balancer(ALB)(AWS最佳实践)

通过ALB转发HTTPS流量到EC2的8080端口,同时绑定ACM证书:

  • 创建ALB:选择互联网-facing类型,配置443端口监听并绑定已签发的ACM证书;添加80端口监听,配置转发到443实现强制HTTPS跳转。
  • 配置目标组:将目标组流量转发到EC2实例的8080端口,确保健康检查路径(如/actuator/health)返回200状态码。
  • 更新Route 53:将A记录从EC2公网IP改为ALB的DNS名称。
  • 调整EC2安全组:允许来自ALB安全组的8080端口入站流量(或直接放行ALB安全组的所有流量)。

方案二:EC2部署Nginx+Let's Encrypt证书

若不想使用ALB,可通过Nginx做反向代理,搭配Let's Encrypt免费证书实现HTTPS访问:

  1. 安装Nginx
    Ubuntu/Debian:

    sudo apt update && sudo apt install nginx -y
    

    Amazon Linux/CentOS:

    sudo yum install nginx -y
    
  2. 获取SSL证书并配置反向代理
    使用Certbot自动获取Let's Encrypt证书并配置Nginx:

    sudo apt install certbot python3-certbot-nginx -y  # Ubuntu/Debian
    # 或 sudo yum install certbot python3-certbot-nginx -y  # Amazon Linux/CentOS
    sudo certbot --nginx -d api.mydomain.com
    

    按交互提示完成配置,Certbot会自动生成Nginx规则,将443端口请求转发到Spring Boot的8080端口。

  3. 验证配置并重启Nginx
    查看Nginx配置文件(通常在/etc/nginx/sites-available/api.mydomain.com),确认包含以下反向代理规则:

    server {
        listen 443 ssl;
        server_name api.mydomain.com;
    
        ssl_certificate /etc/letsencrypt/live/api.mydomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/api.mydomain.com/privkey.pem;
    
        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
    server {
        listen 80;
        server_name api.mydomain.com;
        return 301 https://$host$request_uri;
    }
    

    重启Nginx生效:

    sudo systemctl restart nginx
    
  4. 验证端口监听
    再次执行ss -tulpn | grep 443,确认Nginx正在监听443端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:10:07