概要
何がしたいかと言うと https://random.kakakikikeke.com というドメインで GAE にアクセスできるようにしたいわけです
GAE にはカスタムドメインの機能があり好きなドメインを割り当てることができます
今回はサブドメインを使いたいわけです
で、サブドメインを GAE に割り当てたい場合は割り当てたいサブドメインをちゃんとゾーン管理しないとダメでしたという話です
考えれば当然かもしれませんが結構ハマる人というか勘違いする人が多いんじゃないかなと思いました
すでにドメインの管理を Route53 などにしている場合にはサブドメインを管理するゾーンを新規で作成すれば OK ですが、お名前.com はサブドメインを新規のゾーンで管理する機能はありません
ということでサブドメインを Cloud DNS で管理してから GAE にサブドメインを割り当ててみたのでその方法を紹介します
環境
- Google Cloud DNS (2019/02/21 時点)
- お名前.com (2019/02/21 時点)
勘違いしそうな点
アクセスしたい URL が https://random.kakakikikeke.com なので「あ、kakakikikeke.com のゾーンに CNAME 突っ込めばいいのね」と思いがちですがそれだとハマります
CNAME だけならそれでも良いかもしれないのですが GAE には SSL 証明書を自動で管理してくれる機能があるためネイキッドドメイン (何もサブドメインが付いていない純正のドメイン、ここで言うところの kakakikikeke.com) に対して A レコードを新規で突っ込まなければなりません
それの何が問題かというと kakakikikek.com はすでにホームページ用の A レコードを持っているため GAE ように更に A レコードを突っ込むと本来のホームページの IP ではない IP が返ってしまいホームページが表示されなくなってしまいます
要するに GAE に割り当てるカスタムドメインを「kakakikikeke.com」のようにすでにネイキッドドメインが A レコードとしてすでに使用されているドメインを使うのではなく 、アクセスしたい URL をサブドメインとする「random.kakakikikeke.com」を割り当てます
で「random.kakakikikeke.com」はまだどこにもゾーンとして管理されていないので今回は Cloud DNS でゾーン管理することにしました
前置き長くなりましたがその手順を紹介します
Cloud DNS に random.kakakikikeke.com のサブドメインを管理するゾーンを登録する
これは簡単です
とりあえずサブドメインを新規ゾーンとして登録するだけです
DNS 名がちゃんとサブドメインになるようにしましょう
ゾーン名は好きな名前で OK です
で新規ゾーンが登録されるとこんな画面になります
まだこのサブドメインのゾーンは使えません
ここに表示されている NS レコードをお名前.com 側の DNS サーバに登録してあげることでサブドメインがちゃんと参照できるようにしてあげます
お名前.com に NS レコードを突っ込む
支持された通り NS レコードをお名前.com 側の DNS に突っ込みます
おなじみのお名前.com NAVI を使って「kakakikikeke.com」の DNS レコードの設定をします
ちゃんと random.kakakikikeke.com の NS レコードとして突っ込みましょう
こうすることで random.kakakikikeke.com にアクセスされたときには Google DNS を参照してくださいねという指示を出すことができます
あとは反映して NS レコードが引けるようなるのを待ちましょう
SOA レコードは Google DNS 側の NS レコードが参照できれば参照できるようになるのでお名前.com 側には追加しません
というか SOA レコードは追加できないので心配せず次に進みます
ウェブマスターセントラルに random.kakakikikeke.com を承認させる
全然関係ないですが、ウェブマスターセントラルだけなぜか別サービスなのが気になります
random.kakakikikeke.com の所有者を確認しましょう
直接上記のリンクからたどっても OK です
GAE のカスタムドメインの設定から「新しいドメインの所有権の確認」からでもいけます
TXT レコードで認証します
下記は Onamae.com での認証方法を選択していますが、この TXT レコードは先程新規で登録した Cloud DNS のゾーンに追加します
(一応 TXT レコードは伏せています、、)
こんな感じで Cloud DNS に TXT レコードを追加すれば OK です
たぶん速攻で TXT レコードが引けるようになるので引けるようになったら確認しましょう
問題なく認証できれば、GAE 側のカスタムドメインの設定に進みます
ここまでしてようやく GAE のカスタムドメインの設定にいけるわけです
GAE のカスタムドメインを設定する
GAE -> 設定 -> カスタムドメインと進みます
先程ウェブマスターセントラルで認証したサブドメイン「random.kakakikikeke.com」が選択できるようになっているので選択します
冒頭述べましたが自分はここで「kakakikikeke.com」のネイキッドドメインをずっと選択してハマっていました、、、
ネイキッドドメインでもいいのですが自分の場合は A レコードが被るのでダメというわけです
「続行」を選択します
モザイクで伏せている部分はプロジェクト ID の部分です
マッピングするドメインを選択します
デフォルトだと www が付いたサブドメインと何も付いていないドメインがマッピングに追加されています
www は正直いらないのですが、まぁそのまま進めました
「マッピングを保存」します
で、ここで問題の DNS レコード情報が表示されます
改めて見るとわかりますが、もしネイキッドドメインを登録すると確かに A レコードが複数になるのでホームページがバグりますね、、、
このレコードたちも当然新規で登録した Cloud DNS のゾーンに登録します
Cloud DNS に GAE のマッピング用のレコードを登録する
先程表示された A, AAAA, CNAMEレコードを登録するだけです
CNAME レコード
これだけ先頭に www が付きます
たぶんマッピングする URL を選択するところで www 付きのマッピングを削除すればこの CNAME はいらなくなると思います
最終的に Cloud DNS の「random.kakakikikeke.com」のゾーンのレコードは以下のようになります
あとはこれが dig とかで引けるようになれば GAE のアプリにも http://random.kakakikikeke.com でアクセスすることができるようになります
SSL 証明書が自動で設定される
中身は Let's Encrypt
ですが Google さんが親切に自動で設定してくれます
少しだけ時間がかかるので待ちましょう
これが OK になれば https でもアクセスできます
ちなみに GAE のカスタムドメインは http, https のどちらでもアクセスできるようです
また既存のドメイン xxxx.appspot.com
でもアクセスすることができます
Blogger でも同じようにカスタムドメインを設定したのですが Blogger の場合は既存の URL と http は全部 https にリダイレクトしてくれたのですが、GAE の場合はそのままのようです
もしかすると dispatcher.yaml を使えばリダイレクトすることができるかもしれませんが試していません
最後に
GAE にカスタムドメインをマッピングしてみました
サブドメインを使う場合は新規のゾーン登録が必要なのがポイントです
GAE + お名前.com でカスタムドメインを設定する方法が紹介されていますが、その場合はネイキッドドメインを使っていないことが条件になると思います
今回は Google DNS を使いましたが Route53 でも OK です
Route53 の場合には TXT レコードを使ってサブドメインを委任することができるのでそれを使っても OK だと思います
GAE のカスタムドメインの設定は超簡単みたいな記事が多くありますがすでに使用しているドメインだといろいろ考えることが増え急にレベルが上がるので注意が必要です
というか DNS をある程度自分で管理したことある人じゃないとわからないかもしれません、、、
ちなみに今回の目的である https://random.kakakikikeke.com は Podcast のエピソードをランダムで聴くことができる Web アプリです
「kakakikikeke’s Podcast を聴いてみたいけど、どれを始めに聴いたらいいかわからない」みたいな悩みを持つ方でもこれを使えば気軽に聴けるんじゃないかなと思って作りました
Web 版しかないですが是非使ってみてください