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

如何通过HTTPS而非HTTP调用AWS EC2实例上的Spring Boot端点?

解决HTTPS Angular客户端调用EC2 Spring Boot接口的混合内容错误

以下是两种无需付费负载均衡器的方案,适合AWS新手:

方案一:直接给Spring Boot应用配置HTTPS

这种方案让Spring Boot直接处理HTTPS请求,无需额外中间件。

步骤1:获取免费SSL证书

使用Let's Encrypt提供的免费证书:

  • 在EC2实例(假设为Linux系统)上安装Certbot:
    sudo apt update
    sudo apt install certbot
    
  • 生成证书(需提前将你的域名解析到EC2公网IP,建议绑定弹性IP避免IP变动):
    sudo certbot certonly --standalone -d your-domain.com
    
    证书会生成在/etc/letsencrypt/live/your-domain.com/目录下,包含fullchain.pem和privkey.pem两个文件。

步骤2:配置Spring Boot应用

修改application.properties(或application.yml)添加SSL配置:

server.port=443
server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=/etc/letsencrypt/live/your-domain.com/keystore.p12
server.ssl.key-store-password=自定义密码
server.ssl.key-alias=自定义别名

先将PEM证书转换成PKCS12格式:

sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name 自定义别名

执行时设置的密码需与配置文件中的key-store-password一致。

步骤3:开放EC2安全组端口

在AWS控制台的EC2安全组中,添加入站规则:允许HTTPS(443端口)流量从任意IP(或你的Angular域名IP范围)访问。

方案二:用Nginx反向代理处理HTTPS

如果不想修改Spring Boot的SSL配置,可借助Nginx作为反向代理,由Nginx处理HTTPS请求并转发到Spring Boot的HTTP端口(8080)。

步骤1:安装Nginx并获取SSL证书

  • 安装Nginx:
    sudo apt update
    sudo apt install nginx
    
  • 用Certbot生成证书(同方案一,确保域名解析到EC2 IP):
    sudo certbot --nginx -d your-domain.com
    
    Certbot会自动配置Nginx的基础SSL规则。

步骤2:配置Nginx反向代理

编辑Nginx站点配置文件(通常在/etc/nginx/sites-available/your-domain.com),添加反向代理规则:

server {
    listen 443 ssl;
    server_name your-domain.com;

    # Certbot自动生成的SSL配置
    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # 反向代理到Spring Boot的HTTP端口
    location /myApiPath {
        proxy_pass http://localhost:8080/myApiPath;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

重启Nginx使配置生效:

sudo systemctl restart nginx

步骤3:开放安全组端口

在EC2安全组中开放443端口,同时修改8080端口的入站规则,仅允许本地IP(127.0.0.1)访问,避免直接暴露HTTP端口。

额外注意事项

  • 若没有自有域名,可使用EC2公网DNS,但Let's Encrypt无法为其颁发证书,此时可生成自签名证书用于测试,但生产环境不推荐(浏览器会提示不安全)。
  • 给EC2实例绑定弹性IP,避免实例重启后公网IP变动导致域名解析失效(弹性IP在实例运行时免费)。
  • 测试时,Angular客户端调用地址需改为https://your-domain.com/myApiPath,替换原HTTP地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:20:50