2026年9月5日
2026年9月5日
VPSのIPアドレスをドメインに紐付ける方法:DNSのAレコード設定からWebサーバー・SSLまで
VPSのIPアドレスに独自ドメインを紐付けるには、そのドメインのDNSを管理している場所でAレコード(IPv6ならAAAAレコード)を作り、VPS側のWebサーバーにもそのドメイン名で応答する設定を入れます。DNSだけ、サーバーだけを設定しても表示されないのがつまずきやすい点です。この記事では、DNSの管理場所の確認、レコードの登録、dig での反映確認、Nginx・Apacheの設定、SSL証明書の取得、WordPressのURL変更までを順に説明します。
全体の流れ
作業は大きく3つに分かれます。
- DNSの設定:ドメイン名を引いたときにVPSのIPアドレスが返るようにする
- サーバーの設定:VPSに届いたリクエストを、そのドメイン用のサイトに振り分ける
- 仕上げ:SSL証明書の取得と、WordPressに登録されているURLの変更
順番には理由があります。Let's Encrypt などの証明書は、ドメインがVPSを向いていないと発行できません。また、WordPressのURLを先に新しいドメインへ変えると、DNSが反映されるまで管理画面に入れなくなります。
手順1:VPSのIPアドレスを確認する
VPS事業者の管理画面に表示されるIPアドレスを控えます。サーバー上でも確認できます。
ip -4 addr show
ip -6 addr show scope global
IPv6のアドレスが表示されても、事業者によってはファイアウォールや経路の設定が別途必要なことがあります。IPv6で外部から接続できることを確かめていないうちは、AAAAレコードを作らない方が安全です。AAAAレコードがあると、IPv6が使える閲覧者はそちらを優先して接続し、IPv6側で応答できないと「一部の人だけ表示されない」という分かりにくい症状になります。
手順2:DNSの管理場所を確認する
レコードを登録する場所は「ドメインを買った会社」とは限りません。ネームサーバー(NSレコード)が向いている先が、実際にDNSを管理している場所です。
dig NS example.com +short
返ってきたネームサーバー名で、管理場所の見当がつきます。
- レジストラ(ドメイン登録事業者)のDNSサービス
- VPS事業者が提供するDNSサービス
- Cloudflare などの外部DNSサービス
ネームサーバーを別の場所に切り替えるときは、切り替え先に既存のレコード(特にメール用のMXレコードやTXTレコード)をあらかじめ登録しておきます。空のまま切り替えると、メールが届かなくなることがあります。
手順3:Aレコードを登録する
DNSの管理画面で、次のようなレコードを作ります。画面の項目名はサービスごとに違いますが、「ホスト名(名前)」「種別(タイプ)」「値(内容)」「TTL」を入力する形が一般的です。
| ホスト名 | 種別 | 値 |
|---|---|---|
| @(ドメインそのもの) | A | VPSのIPv4アドレス |
| www | A または CNAME | VPSのIPv4アドレス、または example.com |
ドメインそのもの(example.com)を表すホスト名は、サービスによって「@」、空欄、ドメイン名の入力などと書き方が違います。ドメインそのものにはCNAMEを設定できない決まりがあるため、Aレコードを使います。www はAレコードでもCNAMEでも構いません。
既存のサイトから移転する場合は、切り替えの1〜2日前にTTLを短く(300秒など)しておくと、切り替え後に古いIPアドレスを引き続ける期間を短くできます。TTLを短くした効果が出るのは、それまで設定されていた長いTTLが一巡してからです。
Cloudflare を使っている場合、レコードを「プロキシ」状態にすると、外から引いたときにはCloudflareのIPアドレスが返ります。最初の疎通確認や証明書の取得で混乱しやすいので、慣れないうちは「DNSのみ」の状態で設定を終えてから切り替える方法もあります。管理画面の表記は変わることがあります(2026年10月現在)。
手順4:反映を確認する
DNSの反映は、まず権威サーバー(手順2で確認したネームサーバー)に直接問い合わせて確かめます。ここで正しい値が返れば、登録はできています。
# 権威サーバーに直接問い合わせる
dig @ns1.example-dns.net example.com A +short
# 一般のキャッシュサーバー経由で確認する
dig @8.8.8.8 example.com A +short
dig @1.1.1.1 www.example.com +short
権威サーバーでは正しいのに、キャッシュサーバー経由で古い値が返るなら、以前のTTLが切れるのを待つ段階です。権威サーバーでも値が返らない場合は、レコードを登録した場所と実際のネームサーバーが違っている、ホスト名の入力を間違えている(「www.example.com.example.com」のように二重になる例が多い)、といった原因を疑います。
自分のPCだけ古い値になる場合は、OSやブラウザのDNSキャッシュが残っています。Windowsでは ipconfig /flushdns で消せます。
手順5:Webサーバーにドメイン名を設定する
DNSが正しくても、VPS上のWebサーバーがそのドメイン名を知らなければ、既定のページやほかのサイトが表示されます。
Nginxでは、server_name にドメインを書いた server ブロックを用意します。
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
これはDebian/Ubuntu系のパッケージを前提にした例で、snippets/fastcgi-php.conf もそのパッケージに含まれるファイルです。fastcgi_pass のソケットのパスはPHPのバージョンと環境によって変わります。ls /run/php/ で実際のファイル名を確認してください。設定後は sudo nginx -t で文法を確かめてから sudo systemctl reload nginx で反映します。
Apacheの場合は、バーチャルホストに ServerName example.com と ServerAlias www.example.com を書きます。Debian/Ubuntu系では /etc/apache2/sites-available/ に設定ファイルを置き、sudo a2ensite で有効化、sudo apache2ctl configtest で確認してから再読み込みします。
あわせて、ファイアウォールで80番と443番のポートが開いているかも確認します。UFWを使っている場合は sudo ufw status で一覧を見られます。事業者の管理画面側にもパケットフィルターの機能があるVPSでは、両方を確認してください。
手順6:SSL証明書を取得する
DNSがVPSを向き、HTTPでサイトが表示されるようになったら、証明書を取得します。Certbot を使う場合の例です。
sudo certbot --nginx -d example.com -d www.example.com
# Apache の場合
sudo certbot --apache -d example.com -d www.example.com
この方式(HTTP-01チャレンジ)では、認証局が外部から http://example.com/.well-known/acme-challenge/ にアクセスして確認します。失敗するときは、次の順で確かめます。
digで、キャッシュサーバー経由でも新しいIPアドレスが返るか- AAAAレコードが残っていて、IPv6側で応答できていないことはないか
- 80番ポートが外部から開いているか
- DNSにCAAレコードがあり、使う認証局が許可されていない状態になっていないか
取得後は sudo certbot renew --dry-run で自動更新が通るかを確認しておきます。
手順7:WordPressのURLを変更する
IPアドレスや仮のドメインで構築したWordPressを新しいドメインに切り替える場合は、データベースに保存されているURLも変更します。作業の前にデータベースのバックアップを取ってください。WP-CLIが使えるなら、次の手順で安全に変更できます。
wp db export ~/before-domain-change.sql
wp option update home 'https://example.com'
wp option update siteurl 'https://example.com'
# まず --dry-run で置換される件数を確認する
wp search-replace 'http://203.0.113.10' 'https://example.com' --skip-columns=guid --dry-run
wp search-replace 'http://203.0.113.10' 'https://example.com' --skip-columns=guid
wp search-replace はシリアライズされたデータも壊さずに置換します。SQLの UPDATE 文で直接書き換えると、シリアライズされた値の文字数がずれて設定が消えることがあるので避けます。キャッシュ系のプラグインを使っている場合は、変更後にキャッシュを削除します。
メールを送るなら逆引き(PTR)も確認する
ここまでで「ドメイン名からIPアドレス」の紐付けは終わりですが、VPSからメールを送る場合は「IPアドレスからドメイン名」の逆引き(PTRレコード)も気にする必要があります。逆引きはドメインのDNSではなく、IPアドレスを管理するVPS事業者の管理画面やサポート経由で設定するのが一般的です。逆引きが未設定だと、送信したメールが迷惑メール扱いされやすくなります。
まとめ
- DNSの管理場所は
dig NSで確かめ、そこでAレコード(@ と www)を登録する - AAAAレコードは、IPv6で外部から接続できることを確認してから作る
- 反映は権威サーバーへの
digで登録の正しさを、キャッシュサーバーへのdigで浸透具合を確認する - Webサーバーの
server_name(ApacheならServerName)とファイアウォールの設定も必要 - 証明書の取得はDNSの反映後、WordPressのURL変更はバックアップを取ってから
wp search-replaceで行う