エックスサーバーのドメインのサブドメインでCloudflare Pagesを公開する方法|ネームサーバー変更なし

エックスサーバーのサブドメインでCloudflare Pagesを公開
この記事は約8分で読めます。
記事内に広告が含まれています。

エックスサーバーでWordPressのブログを運用しながら、同じドメインのサブドメイン(例:app.example.com)でWebアプリを公開する手順を解説します。公開先は Cloudflare Pages で、ネームサーバーは変更しません。ブログには影響を与えずに公開できます。

私もこの方法で、個人開発したWebアプリ「やめた理由」をこのブログのサブドメインで公開しました。そのときの手順と、つまずいたところをまとめます。

この方法の仕組み

やることは、エックスサーバーのDNSに CNAMEレコードを1件追加するだけ です。CNAME は「このサブドメインは、別の名前と同じ場所を指す」という設定です。

アクセス先どこが応答するか変更
example.com、www.example.comエックスサーバー(WordPress)なし
app.example.comCloudflare PagesCNAME を追加

ブログ本体やメールの設定には触れないので、WordPress は今までどおり動きます。元に戻したいときも、追加した CNAME を削除するだけです。

Cloudflare では、ドメイン全体を Cloudflare に移す(ネームサーバーを変更する)方法も案内されますが、サブドメインだけならその必要はありません。

前提

  • エックスサーバーでドメインを使っている(サーバーパネルにログインできる)
  • 公開したいサイトやアプリのソースが GitHub にある
  • Cloudflare のアカウント(無料)を作っている。登録後に「ドメインを追加」を案内されても、追加せずに進めて構いません

手順1:DNS の管理先を確認する

まず、ドメインの DNS をどこで管理しているかを確認します。Windows なら PowerShell かコマンドプロンプトで次を実行します。

nslookup -type=NS example.com

結果に ns1.xserver.jp 〜 ns5.xserver.jp が出れば、DNS はエックスサーバーのサーバーパネルで管理しています。この記事はその場合の手順です。

あわせて、公開したいサブドメインが今どうなっているかも見ておきます。

nslookup app.example.com

ブログと同じ IP アドレスが返ってきても心配いりません。エックスサーバーの DNS には「どんなサブドメインもサーバーを指す」ワイルドカード(*)の設定が入っていることがあり、その場合は存在しないサブドメインでも IP が返ります。CNAME を追加すると、そのサブドメインだけが CNAME の指す先に切り替わり、ほかは変わりません。

手順2:Cloudflare Pages でプロジェクトを作る

  1. Cloudflare のダッシュボードで、左メニューの Workers & Pages を開き、Create application を押します。
  2. 「Make something new」の画面が出たら、一番下の「Continue to Pages」のリンクを押します。上の「Connect GitHub」を選ぶと、Pages ではなく Workers として作られます。
  3. Pages の画面で Import an existing Git repository(または Connect to Git)を選び、GitHub と連携します。GitHub の画面では Only select repositories を選び、公開するリポジトリだけを許可すると安全です。
  4. リポジトリを選んで Begin setup を押し、ビルド設定を入力します。
項目入力する値(Vite の場合の例)
Project name好きな名前。名前.pages.dev の URL になる
Production branchmain
Build commandnpm run build
Build output directorydist
  1. Save and Deploy を押すとビルドが始まり、数分で 名前.pages.dev が表示されます。この URL でサイトが開けることを確認してから次に進みます。

Node.js のバージョンが古いとビルドに失敗することがあります。その場合は、リポジトリの直下に .node-version というファイルを置き、中に使いたいバージョン(例:24.14.0)を書きます。

手順3:Cloudflare 側でカスタムドメインを追加する

DNS を設定する前に、先に Cloudflare 側で追加します。 順番が逆だと、接続エラー(522)になることがあります。

  1. 作ったプロジェクトの Custom domains タブ → Set up a custom domain を押します。
  2. app.example.com を入力して進むと、「Choose setup method」の画面になります。
  3. 右側の My DNS provider の Begin CNAME setup を押します。
  4. 追加する CNAME の内容が表示されるので、控えておきます(Name:app、Target:名前.pages.dev)。

左側の Cloudflare DNS(Begin DNS transfer)は、ドメインの DNS 全体を Cloudflare に移す方法です。ネームサーバーの変更になり、ブログやメールにも影響するので、今回は選びません。

手順4:エックスサーバーで CNAME を追加する

  1. エックスサーバーの サーバーパネル で、ドメイン → DNSレコード設定 を開きます。
  2. 対象のドメイン(example.com)の「選択する」を押します。
  3. DNSレコード追加 タブで次のように入力し、確認画面を経て追加します。
項目入力する値
ホスト名app
種別CNAME
内容名前.pages.dev(手順3で控えた Target)
優先度0

TTL(DNS の情報を覚えておく時間)は初期値のままで構いません。

サーバーパネルの「サブドメイン設定」は使いません。 これはエックスサーバー上にサブドメインのサイトを作る機能で、サブドメインがエックスサーバーを指したままになります。今回必要なのは「DNSレコード設定」だけです。

手順5:反映を待って確認する

Cloudflare の Custom domains の画面に戻り、Check DNS records を押します。状態が「Inactive」から 「Active」 に変われば完了です。HTTPS の証明書も自動で発行され、有効になるとメールで知らせてくれます。

すぐに Active にならなくても、設定のやり直しは不要です。世界中の DNS サーバーは、古い情報をしばらく覚えています。反映には数分から数時間かかることがあり、Cloudflare も自動で確認を続けてくれます。

設定が入ったかどうかは、エックスサーバーの DNS サーバーに直接問い合わせると、待たずに確認できます。

nslookup -type=CNAME app.example.com ns1.xserver.jp

canonical name = 名前.pages.dev と表示されれば、エックスサーバー側の設定は正しく入っています。

Active になったら、次の3つを確かめます。

  • https://app.example.com でサイトが表示され、鍵マーク(HTTPS)が付いている
  • http://app.example.com を開くと https:// に転送される
  • ブログ(https://example.com)が今までどおり表示される

手順6:pages.dev の URL を公開用の URL に転送する(推奨)

Cloudflare Pages では、名前.pages.dev でも同じサイトが開けます。入口が2つあると検索エンジンにも利用者にも紛らわしいので、Cloudflare の Bulk Redirects(一括リダイレクト) で公開用の URL に転送します。

  1. ダッシュボードの検索欄に Bulk Redirects と入力して開きます。
  2. Create Bulk Redirect List でリストを作り、次の転送を追加します。
項目値
Source URL名前.pages.dev
Target URLhttps://app.example.com
Status301
パラメーターPreserve query string、Subpath matching、Preserve path suffix をオン
  1. Create Bulk Redirect Rule でそのリストを選び、Save and Deploy を押します。

「Include subdomains」はオフのままにします。 オンにすると、main 以外のブランチを確認するためのプレビューの URL(ブランチ名.名前.pages.dev)まで本番に転送され、公開前の版を確認できなくなります。私は一度オンにして、この状態になりました。

設定したら、名前.pages.dev が公開用の URL に転送され、プレビューの URL はそのまま表示されることを確かめます。

PWA(Service Worker を使うサイト)の場合は、転送を設定する前に 名前.pages.dev を開いたブラウザで、Service Worker がページを表示し続けて転送されないことがあります。その場合は、そのブラウザで pages.dev のサイトデータを削除してください。

よくあるつまずき

症状原因と対処
サブドメインを開くとエックスサーバーのページが出る「サブドメイン設定」で作ってしまった、またはまだ DNS が反映されていない。DNSレコード設定の CNAME を確認し、しばらく待つ
エラー 522 が出るCloudflare 側でカスタムドメインを追加する前に CNAME を追加した。Custom domains で追加して「Active」になるのを待つ
いつまでも「Inactive」のままCNAME のホスト名や内容の入力ミス。前の節の nslookup で確認する
Cloudflare でネームサーバーの変更を求められる「Cloudflare DNS」の方を選んでいる。「My DNS provider」(CNAME)を選び直す

元に戻す方法

エックスサーバーの DNSレコード設定で、追加した CNAME を削除するだけです。ブログ側の設定は変えていないので、ほかに戻す作業はありません。削除すると、そのサブドメインは元の状態(ワイルドカードがあればエックスサーバーを指す状態)に戻ります。

まとめ

  • エックスサーバーの WordPress はそのままに、サブドメインで Cloudflare Pages を公開できる
  • ネームサーバーは変えず、DNSレコード設定で CNAME を1件追加するだけ
  • 先に Cloudflare でカスタムドメインを追加し、「My DNS provider」を選ぶ
  • エックスサーバーの「サブドメイン設定」は使わない
  • pages.dev は一括リダイレクトで転送し、「Include subdomains」はオフにする

この方法で公開した「やめた理由」については、紹介記事と開発記もあわせてご覧ください。

コメント

タイトルとURLをコピーしました