正在设置 Google 个域以使用 https

Setting Google domains to use https

我从 Google 购买了一个域(比如 example.com),我的 Django 应用程序(比如 mysite.herokuapp.com)在 Heroku 上运行。 CNAME 设置在 Google 以将 http 请求转发到 Heroku 上的 Django 应用程序。将请求从 http://mysite.example.com 转发到 mysite.herokuapp.com 工作正常。

最近,我需要在我的应用程序中引入progressive-web-application,它需要https协议,而不是http,也就是说,URL现在必须是 https://mysite.example.com 并且它不适用于 Google 域。我试过 https://mysite.herokuapp.com 并且工作正常,这意味着 Heroku 已经支持 https。然而,我试了(也用谷歌搜索了)很长时间都没有找到解决方案。

那么如何设置 Google 域以使用 https 协议?

来自 Google 的 DNS 答案不能包含端口或协议(http 与 https),它只包含主机名。

您需要在 Heroku django 应用程序中添加从 http 到 https 的重定向,参见例如here 更多说明。

切换到 HTTPS 时,您需要向 heroku 添加证书,该过程会将主机从 "mysite.heroku.com" 更新为 "tokyo-2121.herokussl.com" 之类的东西。您将需要更新您的 DNS 以从新的 SSL 兼容 heroku 实例为 HTTP 和 HTTPS 提供 HTTPS 页面。

这里有一个教程,概述了与 Godaddy 的过程,它应该非常相似或所有 DNS 提供商。

http://www.joshwright.com/tips/setup-a-godaddy-ssl-certificate-on-heroku

您需要更改的不是 Google,而是您的 Django 配置。

在您的应用中设置 SECURE_SSL_REDIRECT to True, and enable the SecurityMiddleware,任何请求都应自动从 HTTP 重定向到 HTTPS。

刚刚从一位 Heroku 的工程师那里得到了解决方案:

1) 将 Heroku 应用程序升级为付费应用程序(例如,Hobby

2) 在 DNS 提供商的设置中,将 DNS 目标设置为 <app_name>.<domain>.herokudns.com(例如,"mysite.example.com.herokudns.com")

3) 运行 $ heroku certs:auto:refresh -a <app_name>(例如,$ heroku certs:auto:refresh -a mysite