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

AWS Elastic Beanstalk中Spring MVC应用HTTP转HTTPS重定向失效求助

看起来你遇到的问题是重定向规则生效了,但因为缺少关键的代理配置,导致Apache没法把请求转发给后端的Spring MVC应用,所以页面才会显示无法访问。我之前在Elastic Beanstalk上部署Spring应用时也踩过类似的坑,给你整理一套完整的解决方案:

第一步:先确认Elastic Beanstalk的SSL基础配置

首先得确保你已经在Elastic Beanstalk控制台完成了SSL证书的配置:

  • 进入你的环境配置,找到「负载均衡器」部分(如果是使用负载均衡器的环境)
  • 添加443端口的HTTPS监听器,关联你在AWS Certificate Manager申请的证书,目标端口设置为实例的80端口(因为Apache默认在实例的80端口监听)
第二步:添加HTTPS重定向的配置文件

在你的Spring MVC项目根目录下创建.ebextensions文件夹,然后新建一个01_https_redirect.config文件,内容如下:

files:
  "/etc/httpd/conf.d/ssl_redirect.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      <VirtualHost *:80>
        RewriteEngine On
        # 检查负载均衡器转发的协议头,若为HTTP则重定向到HTTPS
        RewriteCond %{HTTP:X-Forwarded-Proto} =http
        RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

        # 关键!把请求转发到后端Tomcat(Spring MVC默认跑在8080端口)
        ProxyPass / http://localhost:8080/ retry=0
        ProxyPassReverse / http://localhost:8080/
        ProxyPreserveHost On
        ErrorLog /var/log/httpd/elasticbeanstalk-error_log
      </VirtualHost>
第三步:让Spring MVC正确识别转发头

因为Elastic Beanstalk的负载均衡器会给请求加上X-Forwarded-Proto等头,Spring需要识别这些头才能正确判断当前请求的协议,避免出现重定向循环。在你的application.properties里添加:

server.use-forward-headers=true
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto

如果用的是YAML配置(application.yml),则改为:

server:
  use-forward-headers: true
  tomcat:
    remote-ip-header: x-forwarded-for
    protocol-header: x-forwarded-proto
排查小技巧

如果部署后还是有问题,可以通过Elastic Beanstalk的日志功能查看Apache的错误日志(路径是/var/log/httpd/elasticbeanstalk-error_log),看看有没有代理连接失败或者重定向循环的报错信息。

你之前的配置只加了重定向规则,但漏掉了ProxyPass相关的配置——Apache收到请求后,没法把请求传给后端的Tomcat,所以就算重定向到了HTTPS,最终还是没法访问到你的Spring应用。补上这些配置后应该就能正常运行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:26:52