はじめに
XServer でホスティングしているドメインの DNS を Cloudflare で管理している環境で、新たにサブドメインを追加しようとしたところ、何をしてもサイトが「無効なURL」のまま表示されず、原因がわかるまでに時間がかかりました。
同じ構成でハマる人が多そうなのでまとめます。
環境
- ドメイン管理(DNS): Cloudflare(プロキシ有効、オレンジ雲)
- ホスティング: XServer(新コントロールパネル)
- やりたかったこと:
sub.example.comというサブドメインを追加して静的サイトを公開する
やったこと(失敗した手順)
- XServerサーバーパネル →「ドメイン設定」→「サブドメイン設定」から
sub.example.comを追加 - 同じくサーバーパネル →「SSL設定」でSSL設定をONにしようとした
- SSLの設定が「ネームサーバーがXServerを向いていないため設定できません」のようなエラーになった
ここで詰まりました。
症状
ブラウザで https://sub.example.com にアクセスすると、以下のXServerのエラーページが返り続ける。
無効なURLです。
プログラム設定の反映待ちである可能性があります。
しばらく時間をおいて再度アクセスをお試しください。
「反映待ちかも」と書いてあるので数時間待っても変わらず、原因がまったくわかりませんでした。
原因の調査
CloudflareのIPに向いている
sub.example.com のDNSを確認すると、Cloudflareのエッジサーバー(104.21.x.x など)に向いていました。XServerのIPではありません。Cloudflareがプロキシとして前段に入っているので当然です。
XServerに直接アクセスして切り分ける
XServerのIPに直接アクセスして、HTTPとHTTPSを切り分けてみました。
# HTTP(ポート80)→ XServerに直接
curl -s -H 'Host: sub.example.com' http://<XServerのIP>/
301 Moved Permanently
Location: https://sub.example.com/
HTTPではXServerはドメインを認識しており、HTTPSへリダイレクトしている。
# HTTPS(ポート443)→ XServerに直接
curl -sk -H 'Host: sub.example.com' https://<XServerのIP>/
<title>無効なURLです</title>
HTTPSではエラーになる。
問題の本質
| プロトコル | XServerの挙動 |
|---|---|
| HTTP | ✅ ドメインを認識して301リダイレクト |
| HTTPS | ❌ 「無効なURL」 |
XServerはサブドメインの登録は正常に完了していて、HTTP では正しく動いています。しかし HTTPS(SSL)の設定が完了していないため、ポート443へのリクエストがエラーになっていました。
原因まとめ
XServer の新コントロールパネルでは、「サブドメイン設定」と「SSL設定」が独立した別の操作です。
サブドメインを追加しただけでは HTTP しか動きません。HTTPS で公開するには SSL 設定を別途行う必要があります。
さらに今回の場合、DNS が Cloudflare 管理になっているため、XServer のパネルから SSL を設定しようとすると「ネームサーバーがXServerを向いていない」としてエラーになります。XServer の SSL 設定は Let's Encrypt の HTTP-01 チャレンジを使っており、ドメインがXServerのIPに向いていないとチャレンジが通らないためです。
Cloudflare を使っていると、この**「Cloudflare経由でもホスト名の解決はXServerまで届くが、SSL設定だけが通らない」**という状態になりやすく、エラーメッセージも「無効なURL」とわかりにくいため気づきにくいです。
XServer の新コントロールパネルでの挙動です。旧パネルでは動作や画面が異なる可能性があります。
解決策
方法A: 一時的にCloudflareプロキシを無効化してSSLを発行する(推奨)
最もシンプルで、完全なHTTPS通信が確保できるため推奨です。CloudflareのダッシュボードでサブドメインのレコードをDNSオンリー(グレー雲)に切り替えると、ドメインが直接XServerのIPに向きます。その状態でXServerのSSL設定を行うと、Let's Encryptのチャレンジが通ります。
- Cloudflareダッシュボード → DNSレコードで
sub.example.comのプロキシをオフ(オレンジ雲 → グレー雲) - XServerサーバーパネル →「SSL設定」→「独自SSL設定追加」
- SSL証明書の発行を確認(数分かかる)
- Cloudflareのプロキシを再度オンに戻す
方法B: CloudflareのSSLモードを「フレキシブル」にする
この方法は非推奨です。 Cloudflare は現在「フレキシブル」モードの使用を推奨していません(参考)。緊急の回避策としてのみ検討し、恒久的な運用には使わないでください。
Cloudflare → XServer 間の通信をHTTPにする設定です。XServerへの到達はHTTPで行い、ユーザー ↔ Cloudflare 間はHTTPSになります。
ただし、XServerはHTTPへのアクセスをHTTPSにリダイレクトする設定になっているため、リダイレクトループが発生する場合があります。.htaccess でXServerのリダイレクトを無効にするなどの追加対応が必要です。
方法C: Cloudflare Origin Certificate を使う
Cloudflareが発行するオリジン証明書をXServerにインストールする方法です(Cloudflare Origin CA certificates)。最も本格的な構成になります。
XServerの共有ホスティングでは実質的に使用できません。 XServerの共有サーバーはユーザーが任意のSSL証明書をアップロードしてインストールする機能を提供していないため、この方法は実現できません。VPS・専用サーバー環境での利用を想定した方法です。
チェックリスト
XServer + Cloudflare 構成でサブドメインを追加する際の確認ポイントです。
- XServerサーバーパネルの「ドメイン設定」でサブドメインが追加されているか
- XServerサーバーパネルの「SSL設定」でサブドメインのSSLが別途設定されているか
- CloudflareのSSL/TLSモードがXServer側の設定と整合しているか
- CloudflareのDNSレコードがプロキシ(オレンジ雲)かDNSオンリー(グレー雲)かを意識しているか
まとめ
- XServer(新コントロールパネル)では、サブドメインの追加とSSL設定は別々の操作
- DNS が Cloudflare 管理の場合、XServer のパネルから直接 SSL を発行できない
- 症状が「無効なURL」という汎用的なエラーメッセージなので原因に気づきにくい
-
curlで HTTP と HTTPS を切り分けることで「SSL設定の問題」と特定できる



