使用 Cloudfront 作为 HAProxy 后端服务器(使用 https)

使用 Cloudfront 作为 HAProxy 后端服务器(使用 https)

我的 S3 存储桶前面有一个 CloudFront 资源。它可以通过以下方式访问 —

https://<id>.cloudfront.net

但如果我击中——

<id>.cloudfront.net:443

我收到 400 Bad Request。我想在 HAProxy 配置中指向 CloudFront,但443由于上述问题,我无法使用该端口。我也无法https在服务器语句中使用 URL 协议。

backend my_cloudfront_app
    http-response set-header Strict-Transport-Security max-age=31536000
    server my_server <id>.cloudfront.net:443 ssl verify none

我如何从 HAProxy 中的该服务器块访问 HTTPS cloudfront?

答案1

这和这个问题不是同一个问题吗https://stackoverflow.com/questions/62935547/using-cloudfront-as-a-haproxy-backend-server-with-https

我认为您需要向 cloudfront 后端的请求标头添加一些信息。

此示例适用于 HAProxy 2.0

backend my_cloudfront_app
    http-response set-header Strict-Transport-Security max-age=31536000

    # Add backend header for cloudfront backend request
    http-request set-header Host <id>.cloudfront.net

    # maybe you will need to add a S3 prefix to the request path
    # http-request set-path <CLOUDFRONT_S3_Prefix>%[path] 

    server my_server <id>.cloudfront.net:443 sni str(<id>.cloudfront.net) ssl verify none

答案2

haproxy 假定与后端的连接是通过 http 完成的。为了通过 https 连接到后端,您需要ssl在配置中的 ip:port 部分后面添加server

server micros-amkt-frontend <id>.cloudfront.net:443 ssl verify none

注意:我在示例中包含了一些额外的参数(verify none),因为我找不到进一步的文档。

相关内容