この記事ではCloudflareの無料CDNプランを利用してサイトのセキュリティと表示速度を改善する方法を紹介します。
CDNとは
CDN(コンテンツ配信ネットワーク)は、分散Webコンテンツプロキシサービスです。
CDNサービスの提供者が利用者のWebサイト上の静的コンテンツを世界中の高速ノードに配布し、サイトにアクセスした人に最も近いノードからこれらのコンテンツを提供することで、サイト表示速度を高速化します。
また、CDNを利用すると一部静的な内容はCDNのサーバーからユーザーに提供しますので、表示速度が向上するだけでなく、サーバーのネットワーク帯域とIOリソースの節約にもなります。
さらに、CDNは元のサーバーのIPを隠すことができるため、外部攻撃からサーバーを守る効果もあります。
世の中には多くのCDNサービスプロバイダーがありますが、この記事では私が実際に使用しているおそらく業界で最も有名なCloudflareを紹介します。
今ご覧になっているこのページもCloudflareのノードから配信されたものです。
Cloudflareを利用する
Cloudflareには、基本的なCDNおよびキャッシング、保護機能を提供する個人ユーザー向けの無料プランがあります。
アカウントを作成してログインした後、案内に従って自分のドメイン名を追加し、無料プランを選択して諸々の初期設定を行えばすぐ利用可能です。
CloudflareのDNSサービスを使用する
Cloudflareサービスを使用するには、まずはドメインのDNSをCloudflareに変更します。
クラスAレコードを追加する
次に、DNSレコードを追加します。
まず最初に追加するのは、ルートドメインのクラスAつまりIPv4レコードです。
最後のプロキシボタンはプロキシとDNSのみの2つの状態があります。
- proxied:このレコードへのアクセスはcloudflareのプロキシサーバーを経由します。Cloudflareの高速化、セキュリティ対策を利用するにはプロキシボタンをこのモードにする必要があります。
- DNSのみ:cloudflareのDNSサービスのみを使用し、CDNの機能は一切使用できません。サーバーメンテか、もしくは一部のサブドメイン認証に使えます。
wwwありとwwwなし両方をサポートします。
wwwなしのURLを利用しても、wwwなしの方はDNSエラーにならないように、CNAMEレコードを設定したほうがいいです。
ただし、SEOの面を考えると、wwwあり、なし両方を追加してもそのまま2種類のURLでコンテンツを提供してはいけません。
サーバー側でリダイレクトを設定して、こちらか片方に統一する必要があります。
ウェブサイトのURLをwwwありとwwwなしのどちらにしても構いませんが、どちらか1つにすべてのアクセスを統一したほうがSEOに有利です。 この記事ではNginxのリダイレクト機能を利用して、wwwのありなし及びhttp/httpsを1つの[…]
CloudflareをDDNSとして使用する
上記のDNSレコードを手動で設定する方法は静的IPを入力しますので、自宅サーバーなど、ダイナミックIPを利用している人には不向きです。
更新スクリプト
ダイナミックIPを利用する場合はCloudflareのAPIを利用してIPレコードを自動更新スクリプトを作成して、cronで定期的に実行することがおすすめです。
公式ドキュメントはこちら。
https://api.cloudflare.com/
Githubにも有志が作成した更新スクリプトがゴロゴロがりますが、自分がいろいろテストした結果、追加ソフト不要で2020年3月現在正常に動作できるのはこちらです。
https://github.com/yulewang/cloudflare-api-v4-ddns/blob/master/cf-v4-ddns.sh
スクリプトに自分のCloudflare APIKey、ユーザー名、ドメイン名、DNSレコード名を入力するだけです。
cronタスク
crontabに更新タスクを追加して、1時間ごとにスクリプトを実行します。サーバーのIPアドレスが変わってないときは更新リクエストをしないので、もっと頻度を高くしても問題ないと思います。
sudo crontab -e
0 * * * * / home / [ユーザー名] /cf-v4-ddns.sh
最後は適用するためにcrontabの再起動をお忘れなく!
sudo service cron restart