Elastic Beanstalk Classic Load Balancer无法实现HTTP到HTTPS重定向求助
Elastic Beanstalk 环境HTTP到HTTPS重定向失效排查方案
一、Classic Load Balancer 配置校验
- 核对监听器端口转发规则:
- 443端口(HTTPS)监听器的后端转发目标端口,需和EC2实例上Apache实际监听的业务端口一致(通常为80),禁止将HTTPS监听器的后端转发目标设为443端口
- 80端口(HTTP)监听器的安全组入方向规则,需放开
0.0.0.0/0的访问权限,避免仅放行HTTPS流量导致HTTP请求无法触达LB
- 确认HTTPS监听器关联的SSL证书:检查证书是否覆盖当前绑定域名、是否在有效期内,避免出现域名不匹配的浏览器报错
- 核心误区提示:Classic Load Balancer 本身无内置HTTP到HTTPS的自动跳转规则,跳转逻辑必须在应用层(Apache服务)实现,仅添加443监听器无法实现跳转
二、Apache 层跳转配置落地
因选择Apache作为Web服务器,需通过项目内置配置目录写入跳转规则,避免手动登录EC2实例修改配置(防止自动伸缩拉起的新实例丢失配置):
- 在项目根目录下新建路径结构
.platform/httpd/conf.d/https_redirect.conf,写入以下配置:<VirtualHost *:80> ServerName 你的绑定域名 Redirect permanent / https://你的绑定域名/ </VirtualHost> - 配置写入时不要删除Apache默认的安全权限规则块,避免出现403权限报错
- 完成配置后将项目重新部署到EB环境,待Apache服务重启完成后,所有80端口的HTTP请求会自动返回301状态码,跳转到对应HTTPS地址
三、域名解析配置校验
- 确认Namecheap侧的域名DNS服务器,已切换为Route53提供的权威DNS地址,未残留Namecheap默认的解析记录指向旧IP
- 确认Route53中的域名A记录为别名记录(Alias Record),直接指向EB环境对应的Classic Load Balancer DNS地址,不要手动填写LB的公网IP(手动填写IP会在LB地址变更后直接导致解析失效)
- 本地执行
curl -v http://你的绑定域名,查看响应头中是否存在301跳转的Location字段,无对应字段则说明跳转配置未生效
四、安全组链路打通校验
- EB关联的EC2实例安全组,入方向需放开来自Classic LB安全组的80、443端口访问权限,不要直接将全量公网访问权限绑定到EC2实例
- Classic LB的安全组出方向规则,需允许指向EC2实例80端口的流量,禁止过度限制出方向规则导致请求无法转发到后端Apache服务
内容的提问来源于stack exchange,提问作者Kakashi Hatake
相关产品推荐
相关产品推荐

