エックスサーバーで取ったドメインをNetlifyで使う正しい手順|丸一日ハマって分かった2つの落とし穴
エックスサーバーでドメインを取り、サイトはNetlifyで公開する。この構成で丸一日ドメインが繋がりませんでした。原因はネームサーバーの選択ミスと、やってはいけない設定の追加でした。実際のログつきで手順をまとめます。
この記事でできるようになること
- エックスサーバーで取ったドメインを、Netlifyなど外部のホスティングに正しく向けられるようになる
- 「設定は合っているのに繋がらない」ときの原因を自分で切り分けられるようになる
- SSL証明書の発行が止まる原因を知って、最初から避けられる
結論を先に書きます。 落とし穴は2つです。
- エックスサーバーにはネームサーバーが2系統あり、外部サービスで使うなら
xdomain.ne.jpを選ぶ - サーバーパネルに「ドメイン設定追加」をしてはいけない(SSL発行が止まる)
この2つを外すと、待っても永久に繋がりません。
前提
- エックスサーバーでドメインを取得済み
- サイトの実体はNetlifyにある(他の外部サービスでも考え方は同じです)
- 所要時間:正しくやれば10分。間違えると丸一日溶けます
正しい手順
1. ネームサーバーを xdomain.ne.jp にする
Xserverアカウント → ドメイン → ネームサーバー設定
ns1.xdomain.ne.jp
ns2.xdomain.ne.jp
ns3.xdomain.ne.jp
ここが最大の分岐点です。 ドメインを取得した直後の初期値は ns1〜5.xserver.jp になっています。これはエックスサーバーのレンタルサーバーで運用する場合のもので、外部サービスで使う場合は別系統の xdomain.ne.jp が正解です。
2. DNSレコードを設定する
Xserverアカウント → ドメイン → DNSレコード設定
| ホスト名 | 種別 | 内容 |
|---|---|---|
| (空欄) | A | 75.2.60.5 |
www |
CNAME | あなたのサイト名.netlify.app |
75.2.60.5 はNetlifyが外部DNS向けに公開しているIPです。
www にAレコードが先にあると、CNAMEを追加できません。 先に削除してください。ワイルドカード(*)のAレコードがあればそれも消します。
3. サーバーパネルには何もしない
これが2つ目の落とし穴です。詳しくは後述しますが、サーバーパネルの「ドメイン設定追加」はやってはいけません。
つまずきやすい点
落とし穴1:ネームサーバーがずれていると、待っても永久に繋がらない
初期値の xserver.jp のまま、DNSレコード設定にレコードを入れた場合こうなります。
- 世界中のDNSは、レジストリの登録に従って
xserver.jpに問い合わせる - しかしレコードは
xdomain.ne.jp側にある xserver.jpは「そんなゾーンは知らない」とREFUSEDを返す
この状態は lame delegation(不正な委譲) と呼ばれます。管理画面にはレコードがちゃんと見えているので、「反映待ちだろう」と思って待ってしまいます。実際、6時間待ちました。待っても直りません。
見分け方は簡単で、SOA(ゾーンそのものの存在を問う問い合わせ)を投げます。
curl -s "https://dns.google/resolve?name=あなたのドメイン&type=SOA"
"Status":2 が返るなら、ゾーンが見つかっていません。レコードの中身ではなく、委任先を疑ってください。
レジストリに実際に登録されているネームサーバーはこれで確認できます。
curl -s "https://rdap.verisign.com/com/v1/domain/あなたのドメイン"
落とし穴2:サーバーパネルにドメインを追加するとSSLが発行されなくなる
ネームサーバーを直せば名前解決は通ります。ところが今度はNetlifyの証明書が発行されませんでした。
Netlify APIに直接問い合わせると、理由が出ました。
{"error":"bad dns for custom domain"}
[HTTP 422]
DNSは正常なのに「bad dns」と言われます。原因はこうでした。
サーバーパネルにドメイン設定を追加していたため、xserver.jp 側にも同じドメインのゾーンが作られていたのです。そこにはエックスサーバー自身のIPを向いたAレコードが自動生成されます。
結果、同じドメインに答えが2つ存在する状態になります。
| 参照経路 | 返る答え |
|---|---|
新しい委任(xdomain.ne.jp) |
Netlify のIP |
古い委任のキャッシュ(xserver.jp) |
エックスサーバーのIP |
Netlifyの検証サーバーが古い側を引くと「うちを指していない」と判断し、証明書の発行を拒否します。
サーバーパネルからドメイン設定を削除したところ、同じリクエストが即座に 200 OK を返すようになりました。
サイトの実体は外部にあるので、サーバーパネルへの登録はそもそも不要です。やらないのが正解でした。
落とし穴3:CLIはエラーの中身を隠す
Netlify CLIで証明書の発行を要求すると、こうとしか出ません。
JSONHTTPError: Unprocessable Entity
これでは原因が分かりません。生のcurlでAPIを叩くと本文が読めます。
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
https://api.netlify.com/api/v1/sites/$SITE_ID/ssl
ここで初めて bad dns for custom domain という具体的な理由が出ました。原因が分からないときは、CLIを疑ってAPIを直接叩くのは他の場面でも使えます。
落とし穴4:自分のPCのキャッシュに騙される
ネームサーバーを直した後も、作業していたMacだけは古いIPを返し続けました。外の世界(Google DNS・Cloudflare DNS)は正しく新しいIPを返しているのにです。
自分の環境だけを見て判断しないでください。 必ず外部のDNSで確認します。
curl -s "https://dns.google/resolve?name=あなたのドメイン&type=A"
権威サーバーに直接聞くのも有効です。
dig +short あなたのドメイン A @ns1.xdomain.ne.jp
診断の手順まとめ
繋がらないときは、上から順に切り分けます。
| 順番 | 確認すること | コマンド |
|---|---|---|
| 1 | レジストリのネームサーバー | curl -s https://rdap.verisign.com/com/v1/domain/DOMAIN |
| 2 | ゾーンが存在するか | curl -s "https://dns.google/resolve?name=DOMAIN&type=SOA" |
| 3 | 権威サーバーの答え | dig +short DOMAIN A @ns1.xdomain.ne.jp |
| 4 | 外部から見た答え | curl -s "https://dns.google/resolve?name=DOMAIN&type=A" |
| 5 | SSL発行の拒否理由 | Netlify APIを生のcurlで叩く |
1で xserver.jp が出ていて、2が失敗するなら、落とし穴1です。
1〜4が正常なのに証明書が出ないなら、落とし穴2を疑ってください。
よくある質問
エックスサーバーのネームサーバーはどちらを使えばいいですか?
エックスサーバーのレンタルサーバーでサイトを運用するなら ns1〜5.xserver.jp、Netlifyなど外部のホスティングを使うなら ns1〜3.xdomain.ne.jp です。外部サービスを使うのにxserver.jpのままだと、ゾーンが見つからず名前解決ができません。
DNSレコードは正しいのにサイトが表示されません。何を疑うべきですか?
ネームサーバーの委任先を疑ってください。SOAレコードの問い合わせが失敗する場合、レコードの中身ではなく、レジストリが指しているネームサーバーとレコードの保存先がずれています。この状態は待っても解消しません。
NetlifyでSSL証明書が発行されない場合、何が原因ですか?
NetlifyのAPIを直接叩くとエラーの本文が読めます。bad dns for custom domain と出る場合、Netlifyの検証サーバーがドメインの解決先を自社と認識できていません。同じドメインに対して複数のDNSゾーンが存在していないか確認してください。
ネームサーバーの変更はどれくらいで反映されますか?
変更自体は数十分で反映されましたが、変更前の情報をキャッシュしている外部のDNSサーバーが残ります。.comドメインの委任情報は最大48時間キャッシュされるため、完全に切り替わるまでには時間がかかることがあります。
まとめ
エックスサーバーで取ったドメインを外部サービスで使うときの正解は3つだけです。
- ネームサーバーは
ns1〜3.xdomain.ne.jp(xserver.jpではない) - DNSレコード設定でAレコードとCNAMEを入れる
- サーバーパネルにドメイン設定を追加しない
3番は、公式の案内を読んでいると「追加するもの」と思い込みがちです。実際に丸一日止まった原因がこれでした。
追記(2026-08-23):SSL証明書が発行されました。
サーバーパネルからドメイン設定を削除した後、証明書は約6時間で発行されました。Let's Encryptの証明書で、apexとwwwの両方をカバーしています。
X509v3 Subject Alternative Name:
DNS:tsukaitaoshi.com, DNS:www.tsukaitaoshi.com
ドメイン取得からサイトが独自ドメインで表示されるまで、合計で約15時間かかりました。正しい手順を最初から知っていれば10分で終わる作業です。かかった時間のほぼすべてが、この記事に書いた2つの落とし穴によるものでした。
なお、証明書が発行された後も作業していたMac自身は古いIPを返し続けました。 自分の環境だけで判断せず、必ず外部のDNSで確認してください。