在 AWS-ELB-Tornado 上将 HTTP 重定向到 HTTPS

Redirecting HTTP to HTTPS on AWS-ELB-Tornado

我注意到很多关于这个主题的问题,但我没有找到任何专门针对 Tornado 的问题。

我在负载均衡器后面有一个 Amazon EC2 实例 运行。 HTTPS 证书终止于 ELB,两个端口 80/443 都指向同一个 Tornado 服务器端口。

如何强制将 HTTP 重定向到 HTTPS 流量?

您必须发送包含新位置的 HTTP 301 或 302,有关详细信息,请参阅 RequestHandler.redirect()

Enable xheaders 并使用 X-Forwarded-Proto header。这将告诉您原始请求是通过 http 还是 https 传入的。

另外,请参阅 SO 问题 Retrieve browser headers in Python

您可以考虑在您的 ELB 前面添加 CloudFront (CDN),它有很多好处,例如降低应用程序的延迟、处理流量高峰。 如果你愿意这样做,CloudFront 有 http 到 https 重定向 feature.