我注意到很多关于这个主题的问题,但我没有找到任何专门针对 Tornado 的问题。
我有一个在负载均衡器后面运行的 Amazon EC2 实例。HTTPS 证书在 ELB 处终止,两个端口 80/443 都指向同一个 Tornado 服务器端口。
如何强制将 HTTP 重定向到 HTTPS 流量?
我注意到很多关于这个主题的问题,但我没有找到任何专门针对 Tornado 的问题。
我有一个在负载均衡器后面运行的 Amazon EC2 实例。HTTPS 证书在 ELB 处终止,两个端口 80/443 都指向同一个 Tornado 服务器端口。
如何强制将 HTTP 重定向到 HTTPS 流量?
您必须使用新位置发送 HTTP 301 或 302,有关详细信息,请参阅RequestHandler.redirect()。
启用 xheaders并使用X-Forwarded-Proto
标头。这将告诉您原始请求是通过 http 还是 https 进来的。
另外,请参阅 SO 问题Retrieve browser headers in Python。
您可以考虑在 ELB 前添加 CloudFront (CDN),它有很多好处,例如降低应用程序的延迟,处理流量高峰。如果您愿意,CloudFront 具有 http 到 https 重定向功能。