我从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
,也就是说,现在网址必须是https://mysite.example.com
它对谷歌域名不起作用。我尝试了https://mysite.herokuapp.com
,它运行正常,这意味着Heroku已经支持https
。但是,我在没有找到解决方案的情况下试了很长时间(也用谷歌搜索过)。
那么如何设置Google域使用https
协议?
答案 0 :(得分:4)
来自Google的DNS回答不能包含端口或协议(http与https),它只包含主机名。
您需要在Heroku django应用中添加从http到https的重定向,例如, here了解更多说明。
答案 1 :(得分:2)
您不需要更改Google,这是您的Django配置。
将SECURE_SSL_REDIRECT设置为True,并在您的应用中启用SecurityMiddleware,并且所有请求都应自动从HTTP重定向到HTTPS。
答案 2 :(得分:1)
切换到HTTPS时,您需要将证书添加到heroku,并且该过程会将主机从“mysite.heroku.com”更新为“tokyo-2121.herokussl.com”。您需要更新DNS以从HTTP和HTTPS的新SSL兼容heroku实例提供HTTPS页面。
这是一个教程,概述了与Godaddy的过程,它应该是非常相似或所有DNS提供商。
http://www.joshwright.com/tips/setup-a-godaddy-ssl-certificate-on-heroku
答案 3 :(得分:0)
刚从Heroku的一位工程师那里得到解决方案:
1)将Heroku应用程序升级为付费应用程序(例如Hobby
)
2)在DNS提供商的设置中,将DNS目标设置为<app_name>.<domain>.herokudns.com
(例如,&#34; mysite.example.com.herokudns.com&#34;)
3)运行$ heroku certs:auto:refresh -a <app_name>
(例如$ heroku certs:auto:refresh -a mysite
)