要解决AWS负载均衡器的HTTP到HTTPS重定向无法正常工作的问题,您可以尝试以下方法:
import boto3
elbv2 = boto3.client('elbv2')
def lambda_handler(event, context):
response = elbv2.create_listener_rule(
ListenerArn='arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/1234567890123456/abcdefg',
Priority=1,
Conditions=[
{
'Field': 'host-header',
'Values': [
'example.com',
],
},
],
Actions=[
{
'Type': 'redirect',
'RedirectConfig': {
'Protocol': 'HTTPS',
'Port': '443',
'Host': '#{host}',
'Path': '/#{path}',
'Query': '#{query}',
'StatusCode': 'HTTP_301',
},
},
],
)
return response
请确保将ListenerArn
替换为您的负载均衡器的监听器ARN,并根据您的需求自定义其他参数。
检查安全组设置。确保您的负载均衡器的安全组允许从公共HTTP(端口80)访问负载均衡器,并且允许从负载均衡器转发到目标实例的安全组的HTTPS(端口443)访问。
检查目标实例的配置。确保目标实例的Web服务器已正确配置为接受和处理HTTPS流量,并在HTTP请求中返回适当的重定向响应。
检查SSL证书设置。确保负载均衡器配置了有效的SSL证书,并且证书与负载均衡器绑定的域名匹配。
检查健康检查设置。确保负载均衡器的健康检查配置正确,并且目标实例正常运行。
如果上述解决方法仍然无法解决问题,请参考AWS的官方文档或联系AWS支持以获取进一步的帮助。