1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GAEのカスタムドメインにサブドメインを設定する+CloudflareのDNSを使用するメモ

Last updated at Posted at 2022-05-13

ちょっとハマったので自分用の備忘録。
タイトルの通りの内容です。

1. サブドメインの所有権を証明

GAEの設定>カスタムドメインのタブから、「カスタムドメインを追加」ボタンを押す
01.png

新しいドメインの所有権を証明を押す
02.png

ここにサブドメインを入力する。
余談だが、なぜか最初、ここにはネイキッドドメインしか入力できないもんだと勘違いしていた。そんなことはなく、普通にサブドメインも入力できる。
使いたいサブドメインがsub.example.comならsub.example.comと入力する
03.png

ウェブセンターセントラルに移動する。
2022年5月時点ではドメイン名プロバイダにCloudflareがないので「その他」を選択
04.png

TXTレコードの情報が出てくるのでコピー
このウェブセンターセントラルの画面はそのまま開いておくこと。
05.png

CloudflareのDNS設定画面へ移動。
レコードの追加ボタンを押す。
レコードタイプは「TXT」、使いたいサブドメインがsub.example.comなら名前に「sub」、コンテンツに↑でコピったTXTレコードの値(google-site-verification=...みたいな値)を入力
09.png

ウェブセンターセントラルへ戻り、「確認」ボタンを押す。
ちゃんと設定できていれば速攻でチェックが終了する
10.png

2. サブドメインの設定

GAEのカスタムドメインの追加画面へ戻る。
「使用するドメインを選択」のプルダウンから、↑で設定したカスタムドメインが選べるようになっている。
ので、選ぶ。
11.png

この後、マッピングするドメインとして、sub.example.comwww.sub.example.com の2つが入力済みの状態で出てくると思うが、特に何もせずにそのまま進む。
なお、マッピング対象ドメインからwww付きのやつをここで消してしまった場合、CNAMEの設定先がサブドメインと同じになるため(sub.example.comならsub)、Aレコード・AAAAレコードと重複して登録できなくなり、少なくともCloudflareのDNSを使っている場合は、DNSレコードが設定できなくて、この後詰むことになる。(他のDNSでなら登録できるのかもしれないが、試してないので良く知らない)

AレコードとAAAAレコードとCNAMEレコードの情報が表示される。
12.png

↑の情報をコピーしながらCloudflareのDNSに登録していく。
13.png

なお、この↑スクリーンショット上では「プロキシステータス」を「プロキシ済」にしているが、これは間違いである
プロキシの設定は外して、「DNSのみ」にする必要がある。
プロキシ設定を施していると、後のマネージド証明書の発行シーンで詰まる。
全部設定するとこんな感じ
14.png

3. 証明書発行を待つ

このあと、GAEによるマネージドの証明書発行処理が走る。
これは結構時間がかかる。
なので、気長に待つ。
なお、上にも書いた通り、Cloudflare DNSを「プロキシ済」に設定している場合、散々待たされた挙句処理が失敗するので注意。

私の場合は、↑でCloudflareを「プロキシ済」にしていて、失敗してからやり直したので、最初から「DNSのみ」で登録していればもっとスムーズに(短時間で)完了するのかもしれない。
ちゃんと計ってはいないけど、「DNSのみ」に設定してから体感で30分~1時間くらいは待った気がする。
発行が終わると「証明書ID」のところに数字が入る。
15.png

4. dispatch.yamlをdeploy

ここに書いてある内容に従って、dispatch.yamlを書く。
sub.example.comを相手にするなら以下のような感じ。
serviceのところは実際に使っているGAEのサービス名を記述する。

dispatch:
  - url: "*sub.example.com/*"
    service: sub-example

書き終わったらgcloud app deploy dispatch.yamlでdeployする。
実行時の標準出力例は以下

> gcloud app deploy dispatch.yaml
Configurations to update:

descriptor:      [/xxx/yyy/zzz/dispatch.yaml]
type:            [routing rules]
target project:  [example]


Do you want to continue (Y/n)?  Y

Waiting for operation [apps/example/operations/87a40077-25a8-4c19-be96-8a05caa4c0f5] to complete...done.                                    
Updating config [dispatch]...done.                                                                                                                

Custom routings have been updated.

成功するとGAEの「サービス」メニューで「送信ルート」の欄に↑で記述したルート設定が表示される。
16.png

余談だが、最初、 dispatch.yaml はGithubリポに含めて一緒にdeployすれば、GAEのdeploy時に勝手にやってくれるもんだと、何故か勘違いしていた。
このファイル自体はgcloud app deploy dispatch.yaml でしか反映できない。
冒頭の公式ドキュメントにもある通り、dispatch.yaml はGAEのアプリケーションに対して1つなので、複数サービスを扱う場合は、このファイルをどこかのリポで管理するという発想自体がそもそも多分ちょっとズレている。
まあ代表として複数あるサービスのリポのどこかに置いといてもいいのかもしれないけど。

5. CloudflareのSSL設定

このページに記載がある通り、GAEをオリジンにする場合、Cloudflare→GAE間もSSL通信が必要になるらしい。
というわけでCloudflareのSSL/TLSメニューに入って、「フル」を選択する。
image.png

4.項でちゃんとした証明書が出来てる感じがするので、「フル(厳密)」でも動く気がするが、試してないのでわからない。

以上

おわり。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?