Post

CloudFlare Rulesを使用してドメインの移転をした

ドメインの移行

自分用にVRChat関係のメモを書き留めた「ぶいちゃメモ」というWikiがあるんですが、

身内以外も参照しているっぽいので、jo3qma.comよりcopi.peで管理するほうが適当かなぁ・・・。

とか思ったので、ドメインの移転をすることにしました。そのメモです。

Nginxか何かでリダイレクト設定書いたコンテナ立てても良いのですが、めんどくさいので今回はCloudFlareのルールを使用して実現します。

HTTPステータスコードの話

HTTPアクセスすると、ヘッダーの中にステータスコードというものが付与されて帰ってきます。

通常ならば、200 OK、ファイルがないなら404 Not Foundといった感じです。

URLの変更やリダイレクトについても決められており、300番台のステータスコードを使用します。

移転関連は

  • 301 Moved Permanently
  • 302 Found
  • 307 Temporary Redirect
  • 308 Permanent Redirect

が該当しそうです。

今回は、永続的に移転するので301若しくは308が該当しそうです。

どうやら、今回使用するCloudFlare Rulesでは301若しくは302のみ使えるそうです。

なので、301を返してやるように設定するのが適当そうです。

Webページの設定

これは、使ってるサーバー側アプリケーションの設定なので、完全にメモです。

まず、Wiki.jsのURL設定を移行先ドメインに変更します。 Image rewriting Wiki.js URL settings.

次に、Nginx-Proxy用の設定も変えます。 Image rewriting Wiki.js's Docker-Compose.yml settings.

A/AAAAレコード書き換え

移行先ドメインのDNSレコードを任意のものに、

移行元ドメインのDNSレコードを以下のように書き換えます。

  • Aレコード: 192.0.2.1
  • AAAAレコード: 100::

Rewrited DNS A/AAAA Record.

Bulk Redirect(一括リダイレクト)で設定する。

CloudFlareのダッシュボードのアカウントホームの下の方にある一括リダイレクトから設定できる。

CloudFlare Rulesの画面から、「ページルールを作成」

ページルールの設定を以下のようにします

  • URLを移転元ドメイン/*
  • 設定をURLの転送
  • ステータスコードを301 - 永久リダイレクト
  • 転送先URLをhttps://移転先ドメイン/$1

に設定し、デプロイします。

アクションに☑入っていればOKです。

確認

cURLに-Iオプションを付けるとヘッダーのみ返ってきます。

ステータスコードが301、locationが移転先のものになっていればOKです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ curl -I https://vrc.jo3qma.com
HTTP/2 301 
date: Fri, 30 Jun 2023 01:58:26 GMT
location: https://vrc.copi.pe/
cache-control: max-age=3600
expires: Fri, 30 Jun 2023 02:58:26 GMT
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=jbG8J%2BN6UG8RKWV8YwZT2nG%2FzpDj%2FeU7MCXmzxdxZvDKYnQ0Sj%2BtXtiQmPMph%2Fwvwg%2B2HfqBo8zlh1AmjILA19HsQBL0vAOadgr%2FswVAaFxprJjjZJN6bqhTfZT4zsxbww%3D%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
strict-transport-security: max-age=15552000; preload
x-content-type-options: nosniff
server: cloudflare
cf-ray: 7df2cde18cc01a1a-KIX
alt-svc: h3=":443"; ma=86400

$

パスを含む場合でも。。。OK

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ curl -I https://vrc.jo3qma.com/vrchat/launch_options
HTTP/2 301 
date: Fri, 30 Jun 2023 01:59:35 GMT
location: https://vrc.copi.pe/vrchat/launch_options
cache-control: max-age=3600
expires: Fri, 30 Jun 2023 02:59:35 GMT
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=gNwoJSAr6pqdtwMTpV9shM4I3w5l4A8HxQ5CZrpa12ZAzkuddhtGZole5fEPOSGCIR5a8gMtLX9TRG%2FNcDnaf7n%2FFdk61NS%2FWLe%2FsDRCYdIY%2F9sNquOwedy5lhmbJl1tJA%3D%3D"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
strict-transport-security: max-age=15552000; preload
x-content-type-options: nosniff
server: cloudflare
cf-ray: 7df2cf8fdabd19c5-KIX
alt-svc: h3=":443"; ma=86400

$

おわり

Bulk Redirectsとかでできるかと思ったけどそんなことはなく、Rulesで設定するのに気づくのに時間かかった。

これで、copi.peのコンテンツを増やすことができたし、ドメイン維持の意味もできてきた。(Misskeyあるけどね)

コンテンツは CC BY-NC-SA 4.0 の下で利用できます。