Googleからドメイン(たとえば、example.com
)を購入し、Djangoアプリケーション(たとえば、mysite.herokuapp.com
)はHerokuで実行されます。CNAMEはGoogleで転送するように設定されています。 HerokuのDjangoアプリケーションへのhttpリクエスト。http://mysite.example.com
からmysite.herokuapp.com
へのリクエストの転送は問題なく機能します。
最近、アプリケーションにprogressive-web-application
を導入する必要があり、https
ではなくhttp
プロトコルが必要です。つまり、URLはhttps://mysite.example.com
である必要があります。 Googleドメインでは機能しません。 https://mysite.herokuapp.com
を試しましたが、正常に動作します。つまり、Herokuはすでにhttps
をサポートしています。しかし、私は解決策を見つけることなく長い間試しました(そしてグーグルもしました)。
では、https
プロトコルを使用するようにGoogleドメインを設定するにはどうすればよいですか?
Herokuのエンジニアの1人から解決策を得ました:
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
)
GoogleからのDNS回答には、ポートまたはプロトコル(httpとhttps)を含めることはできず、ホスト名のみを含めることができます。
Heroku Djangoアプリで、httpからhttpsへのリダイレクトを追加する必要があります。詳細については、たとえば here を参照してください。
変更する必要があるのはGoogleではなく、Django構成です。
SECURE_SSL_REDIRECT をTrueに設定し、アプリで SecurityMiddleware を有効にすると、リクエストはすべてHTTPからHTTPSに自動的にリダイレクトされます。
HTTPSに切り替えるときは、herokuに証明書を追加する必要があります。そのプロセスにより、ホストが「mysite.heroku.com」から「tokyo-2121.herokussl.com」のように更新されます。 HTTPとHTTPSの両方で新しいSSL準拠のherokuインスタンスからHTTPSページを提供するには、DNSを更新する必要があります。
これは、Godaddyでのプロセスの概要を説明するチュートリアルです。これは、非常に類似しているか、すべてのDNSプロバイダーである必要があります。
http://www.joshwright.com/tips/setup-a-godaddy-ssl-certificate-on-herok